关于python:为什么从文件获取的字符串不等于普通字符串?

Why string getting from file is not equal to common string?

本问题已经有最佳答案,请猛点这里访问。

我在python 3.5上,想从文件中找到匹配的单词。我说的是awesome.txt文件中的第一个词也是awesome。那么为什么addedWord不等于word?有人能告诉我原因吗?

MyWord

1
2
3
4
awesome
shiny
awesome
clumsy

匹配的代码

1
2
3
4
5
addedWord ="awesome"
        with open("myWords.txt" , 'r') as openfile:
                for word in openfile:
                    if addedWord is word:
                        print ("Match")

我也尝试过:

1
2
3
4
5
6
 d = word.replace("
"
,"").rstrip()
 a = addedWord.replace("
"
,"").rstrip()
      if a is d:
          print ("Matched :" +word)

我还试图通过typeOf(addedWord)typeOf(word)得到变量的类,它们都来自'str'类,但并不相等。这里有什么问题吗?


这两个字符串永远不会是同一个对象,因此您不应该使用is来比较它们。使用==

你去除换行符的直觉很到位,但是你只需要一个对strip()的调用(它将去除所有空白,包括制表符和换行符)。


您的代码有两个问题。

1)迭代文件返回的字符串包括尾随新行。正如你所怀疑的那样,你需要把新品从.strip().rstrip().replace()移走。

2)字符串比较应与==进行,而不是与is进行。

所以,试试这个:

1
2
    if addedWord == word.strip():
       print ("Match")