python - 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?
解决方案
你可以试试:
with open('input.txt', 'r') as file:
lines = [line for line in iter(lambda: str.strip(file.readline()), '0')]
但不知怎的,我不喜欢它...
推荐阅读
- asp.net-core - 没有可用于指定 RuntimeIdentifier 'browser-wasm' 的 Microsoft.AspNetCore.App 运行时包
- java - If line.startsWith("something") don't write this line nor the next line
- karate - 我对仅在空手道中包含的功能有疑问?
- java - 我有一个返回 int 的方法,它告诉我我缺少一个 return 语句。可以在不重写方法的情况下解决这个问题吗?
- sql-server - 使用 SQL Server Management Studio 为表中的前 100 个值创建脚本
- mysql - 过度分区函数中两个时间戳的连接值
- ansible - 为什么有些剧本使用“主机 localhost”或“连接:本地”然后在任务变量上配置主机 IP?
- python - 尝试在 tkinter 中创建滚动条
- android - 尝试以编程方式安装 APK 时出错
- apache-spark - 如何访问数组类型值并在两个不同的列中设置火花?