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

les*_*l0l 4 python

我有一个名为test.txt包含以下内容的文件:

Line 1
Line 2
Line 3
Line 4
Run Code Online (Sandbox Code Playgroud)

我有这样简单的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."
Run Code Online (Sandbox Code Playgroud)

我得到了这个结果:

Line 3 - Line 1

Line 3 - Line 2

Line 3 - Line 3

Line 3 - Line 4

This works.
Run Code Online (Sandbox Code Playgroud)

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

我错过了什么?

C.B*_*.B. 5

剥去换行符:

for line in f:
    print myline + " - " + line
    if myline == line.strip():
        print "We have a match!"
Run Code Online (Sandbox Code Playgroud)


Gri*_*han 5

为什么不"我们有匹配!" 打印?我错过了什么?

如果你会注意到控制台上的输出,你得到的是双倍 \n(换行符),print因为在文件中每一行都有\n最后一行.您的文件看起来像:

Line 1
Line 2
Line 3
Line 4
Run Code Online (Sandbox Code Playgroud)

基本上是:( Line 1\nLine 2\nLine 3\nLine 4假设您没有任何额外的空格,例如标签,空格).

在for循环:for line in f:,结束char line\n(并且line你认为'Line 3'是实际的'Line 3\n')因此你的if条件失败.

要删除那\n只是使用str.strip([chars]);功能.该方法strip()返回一个字符串的副本,其中所有字符都已从字符串的开头和结尾处删除(默认的空白字符).

所以,取而代之if myline == line:if myline == line.strip()是@ CB的答案.