我的文件包含类似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
但这不起作用
答案 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)