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