小编典典

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

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.

为什么没有“我们有比赛!” 被打印?

我错过了什么?


阅读 152

收藏
2020-12-20

共1个答案

小编典典

为什么没有“我们有比赛!” 被打印?我错过了什么?

如果您会注意到控制台上的输出,则您会因为第二个而得到 双倍
\n(换行),这是因为print第二个是因为文件中的每一行都\n在末尾。您的文件如下所示:

Line 1
Line 2
Line 3
Line 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条件 失败

要删除它,\n只需使用str.strip([chars]);功能。该方法strip()返回字符串的副本,在该副本中,已从字符串的开头和结尾去除所有字符(默认的空白字符)。

所以,更换if myline == line:if myline == line.strip()是什么// @ CB的答案。

2020-12-20