我有一个要从文件中读取的字符串,有些情况下readline()将返回一个空白行,我需要检查一下,请参阅下面的屏幕截图,如果有人可以向我解释,将不胜感激为什么它会给出错误的结果:
从屏幕截图中可以看到,line ='\ n',为什么表达式的评估结果为False?
肯定是检查空白行的替代方法,但我只是非常奇怪地想知道为什么我的这个脚本不起作用。
谢谢。
感谢。
答案 0 :(得分:1)
您的输入文件很可能包含一些令人讨厌的字符,例如"zero width space"或"invisible separator"。如果您打印(或评估)repr(line)
:
with open('data.txt', 'w') as f:
f.write(u"\n")
f.write(u"\u200B\n") # zero width space
f.write(u"\u2063\n") # invisible separator
f.write(u"\n")
with open('data.txt', 'r') as f:
for line in f:
print(repr(line))
如果您调试上述内容,您将能够复制第2行和第3行的行为,但不能复制第1行和第4行。请注意,这些字符在大多数字体中都不可见(它们不会占用任何空间! ),简单地打印/显示它们(就像调试器中的悬停一样)将不会显示它们甚至在那里。
在PyCharm的“评估表达式”对话框中,简单评估“repr(line)
”以查看其中的真实内容。
答案 1 :(得分:0)
'\n'
不是空行。 ""
是。因此,您可以查看if line == "":
或if not line:
。如果您从文件中读取python将从行中删除\n
。因此,如果它是空的(只有新行字符),它将返回一个空字符串。