字符串比较似乎不适用于从文件读取的行

时间:2014-02-13 17:38:02

标签: python

我有一个名为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.

为什么不“我们有匹配!”打印?

我错过了什么?

2 个答案:

答案 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.的回答。