python - 文件中的空行时中断
问题描述
我的文件包含类似的文本Hello:World
#!/usr/bin/python
f = open('m.txt')
while True:
line = f.readline()
if not line :
break
first = line.split(':')[0]
second = line.split(':')[1]
f.close()
我想将字符串拆分为 2 个变量后放入
在第二次迭代中我得到错误
列表索引超出范围
当该行为空时它不会中断,我搜索了相关主题的答案,解决方案是
if not line:
print break
但它不起作用
解决方案
您可以通过使用内置iter()
函数的可选功能相对轻松地做到这一点,方法是向其传递第二个参数(sentinel
在文档中调用),如果在迭代时遇到该值,它将导致它停止。
如果遇到空行,如何使用它使行处理循环终止:
with open('m.txt') as fp:
for line in iter(fp.readline, ''):
first, second = line.rstrip().split(':')
print(first, second)
请注意在rstrip()
读取的每行末尾删除换行符。
推荐阅读
- c# - 使用 RazorTemplates 库时出错:“CS0012:类型“System.Attribute”是在未引用的程序集中定义的”
- javascript - 反应复选框将不起作用,onChange 不会触发
- c++ - 如何设置 VS Code 以在 OSX 中构建、运行和调试简单的 C++ 文件?
- c# - 网格数据设置控件
- batch-file - 批处理脚本中的复制功能不起作用
- react-native - 检查构建是否侧载或从 App/Play 商店下载
- apache-spark - Spark Streaming 在本地模式下工作,但在客户端/集群模式下“阶段失败”并出现“无法初始化类”
- javascript - 将 AJAX 函数调用到 REST(Paypal)部分中的 PHP 函数脚本,在 jQuery 中而不在 REST 中工作
- r - 在面板/绘图之外添加变量名称
- reporting-services - 不同报告服务器上的不同数字格式