文件中的空行时中断

时间:2018-07-28 00:18:51

标签: 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

但这不起作用

3 个答案:

答案 0 :(得分:0)

如果在一个空行之后有几行(或者您的文本编辑器在文件末尾插入了一个空行),则它实际上不是空的。它具有换行符和/或回车符

您需要将其剥离

with open('m.txt') as f:
    for line in f:
        if not line.strip(): 
            break

        first, second = line.split(':')

答案 1 :(得分:0)

通过将内置的iter()函数的可选功能传递给它的第二个参数(在文档中称为 sentinel ),您可以相对轻松地实现此目的如果在迭代过程中遇到该值,它将使其停止。

以下是在遇到空行时如何使用它来使行处理循环终止的方法:

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

请注意rstrip(),它会在每次读取的行末删除换行符。

答案 2 :(得分:-2)

您的代码很好,我无法在评论中添加图片。一切正常,在这里:

enter image description here