我有一个test.txt包含以下内容的文件:
test.txt
Line 1 Line 2 Line 3 Line 4
我有一个像这样的简单Python程序:
f = open("test.txt") myline = "Line 3" for line in f: print myline + " - " + line if myline == line: print "We have a match!" if myline == "Line 3": print "This works."
我得到了这个结果:
Line 3 - Line 1 Line 3 - Line 2 Line 3 - Line 3 Line 3 - Line 4 This works.
为什么没有“我们有比赛!” 被打印?
我错过了什么?
为什么没有“我们有比赛!” 被打印?我错过了什么?
如果您会注意到控制台上的输出,则您会因为第二个而得到 双倍 \n(换行),这是因为print第二个是因为文件中的每一行都\n在末尾。您的文件如下所示:
\n
print
基本上是:(Line 1\nLine 2\nLine 3\nLine 4假设您没有任何多余的空格,例如制表符,空白)。
Line 1\nLine 2\nLine 3\nLine 4
在for循环中:for line in f:,lineis的结尾char \n(并且line您认为'Line 3'is实际上是'Line 3\n')因此您的if条件 失败 。
for line in f:
line
'Line 3'
'Line 3\n'
if
要删除它,\n只需使用str.strip([chars]);功能。该方法strip()返回字符串的副本,在该副本中,已从字符串的开头和结尾去除所有字符(默认的空白字符)。
str.strip([chars]);
strip()
所以,更换if myline == line:的if myline == line.strip()是什么// @ CB的答案。
if myline == line:
if myline == line.strip()