首页 > 解决方案 > 文件中的空行时中断

问题描述

我的文件包含类似的文本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

但它不起作用

标签: python

解决方案


您可以通过使用内置iter()函数的可选功能相对轻松地做到这一点,方法是向其传递第二个参数(sentinel在文档中调用),如果在迭代时遇到该值,它将导致它停止。

如果遇到空行,如何使用它使行处理循环终止:

with open('m.txt') as fp:
    for line in iter(fp.readline, ''):
        first, second  = line.rstrip().split(':')
        print(first, second)

请注意在rstrip()读取的每行末尾删除换行符。


推荐阅读