我有一个名为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.
为什么不“我们有匹配!”打印?
我错过了什么?
答案 0 :(得分:5)
Strip换行符:
for line in f:
print myline + " - " + line
if myline == line.strip():
print "We have a match!"
答案 1 :(得分:5)
为什么不“我们有匹配!”打印?我错过了什么?
如果你会注意到控制台上的输出你得到 double \n
(换行符),因为print
秒,因为在文件中每一行都有\n
在末尾。您的文件看起来像:
Line 1
Line 2
Line 3
Line 4
基本上是:Line 1\nLine 2\nLine 3\nLine 4
(假设您没有任何额外的空格,例如制表符,空格)。
在for循环中:for line in f:
,line
的结束字符为\n
(您认为line
的{{1}}实际为'Line 3'
因此,'Line 3\n'
条件失败。
删除if
仅使用str.strip([chars]);
功能。方法\n
返回字符串的副本,其中所有字符都已从字符串的开头和结尾处删除(默认空格字符)。
所以,将strip()
替换为if myline == line:
,这是@ C.B.的回答。