为了账号安全,请及时绑定邮箱和手机立即绑定

iter() 的多个哨兵值?

iter() 的多个哨兵值?

梦里花落0921 2023-09-05 20:54:22
我试图通过列表理解从文件中获取行,直到到达带有“0”的行,如下所示:with open('input.txt', 'r') as file:    lines = [line.strip() for line in iter(file.readline, '0')]问题是“0”可能不在最后一行,在这种情况下它实际上是“0\n”。我知道我能做到for line in file:    line = line.strip()    if line == '0':        break    else:        lines.append(line)但这太可怕了,我几乎无法忍受看它。我是戏剧女王吗?有没有办法同时使用 '0' 和 '0\n' 作为哨兵值,或者在哨兵值检查它之前删除 iter() 内的 readline ?
查看完整描述

1 回答

?
慕容3067478

TA贡献1773条经验 获得超3个赞

你可以尝试:

with open('input.txt', 'r') as file:
    lines = [line for line in iter(lambda: str.strip(file.readline()), '0')]

但我不知何故不喜欢它......


查看完整回答
反对 回复 2023-09-05
  • 1 回答
  • 0 关注
  • 99 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信