我有一个名为 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.
为什么“我们有一场比赛!”打印出来?
我错过了什么?
最佳答案
Why doesn't "We have a match!" get printed? What did I miss?
如果您注意到控制台上的输出,您会得到 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
你认为是 'Line 3'
实际上是 'Line 3\n'
) 因此你的 if
条件失败。
要删除 \n
只需使用 str.strip([chars]);
功能。 strip()
方法返回字符串的副本,其中从字符串的开头和结尾删除了所有字符(默认空白字符)。
因此,将 if myline == line:
替换为 if myline == line.strip()
这就是@C.B. 的答案。
关于python - 字符串比较似乎不适用于从文件中读取的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21761498/