Python 文件中的空行时中断

Python 文件中的空行时中断,python,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() 我想把字符串拆分成两个变量后再放入 在第二次迭代中,我得到了一个错误 列表索引超出范

我发现文件中包含的文本类似于
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()
我想把字符串拆分成两个变量后再放入

在第二次迭代中,我得到了一个错误

列表索引超出范围

行为空时不会中断,我搜索了相关主题的答案,解决方案是

if not line:
           print break

但它不起作用

您的代码很好,我无法在注释中添加图片。在这里,一切都是有效的:


如果在空行之后有行(或者文本编辑器在文件末尾插入了空行),那么它实际上不是空的。它具有新行字符和/或回车符

你需要把它脱掉

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

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

通过使用内置函数的可选功能,您可以相对轻松地执行此操作,方法是向其传递第二个参数(在文档中称为
sentinel
),如果在迭代时遇到该值,该参数将使其停止

下面是如何在遇到空行时使用它使行处理循环终止:

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

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

我运行了你的代码,没有错误:/n你确定你在同一个文件夹中有
m.txt
吗?哦,我不明白怎么回事!我想知道为什么这被否决了,很肯定这会帮助反对者不上传图片。用“行得通”的答案不是很有用,因为这样的话,问题就没有意义了,老师可以把它作为文本放进去。不过,我只是简单地说明了他的确切代码的工作原理,也许它会给他指出正确的方向?空行后面没有行,但是,
如果没有行
没有检查你认为是什么。另外,在运行代码之前,请确保已保存文件