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 ?


梦里花落0921
浏览 100回答 1
1回答

慕容3067478

你可以尝试:with open('input.txt', 'r') as file:     lines = [line for line in iter(lambda: str.strip(file.readline()), '0')]但我不知何故不喜欢它......
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python