首页 > 解决方案 > iter() 的多个标记值?

问题描述

我试图通过列表理解从文件中获取行,直到到达带有“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?

标签: python

解决方案


你可以试试:

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

但不知怎的,我不喜欢它...


推荐阅读