Python 如果文件中的行等于用户输入

Python 如果文件中的行等于用户输入,python,Python,所以我有这个代码: f=open('spells.txt') input = raw_input("What spells?") for line in f: if line == input: print line f.close() 我正试图弄明白为什么它读不到我输入的咒语的标题。我知道阅读的作品,因为我可以打印出一定数量的行。关于文件输入和用户输入,有什么我不理解的地方。我觉得某个地方有一个隐藏的\n,但我不确定。文件中的行包含新行字符'\

所以我有这个代码:

f=open('spells.txt')
input = raw_input("What spells?")
for line in f:
        if line == input:
                print line
f.close()

我正试图弄明白为什么它读不到我输入的咒语的标题。我知道阅读的作品,因为我可以打印出一定数量的行。关于文件输入和用户输入,有什么我不理解的地方。我觉得某个地方有一个隐藏的\n,但我不确定。

文件中的行包含新行字符
'\n'
最后,请尝试以下操作:

if line.rstrip() == input.strip():

这是更新的代码:

f=open('spells.txt')
userInput = raw_input("What spell?")
for line in f:
        if line.rstrip('\n') == userInput:
                print line
f.close()

它仍然会产生相同的结果,即没有显示任何内容,并返回到命令行。我将尝试其他条带,但我想我会将此作为更新发布在这里。

我认为
line
包含
'\n'
,而原始输入并不更具体,
line.rstrip('\n')
您正在覆盖内置函数。这不是一个错误,但可能是个坏主意。@Matthias我甚至没有想到这一点,我更改了我的变量。在正常情况下,没有人会将
input
用于Python2,但如果您的代码在Python3上运行,则只有
input
(具有Python2的
raw\u input
功能)。请尝试将“\r”添加到rstrip:rstrip(“\r\n”)或不使用任何参数调用它。我尝试了使用“\r\n”和不使用任何参数。都没有返回任何内容,我开始怀疑我的python安装是否有问题。我试着在不使用if语句的情况下执行print line.rstrip(),效果很好。因此,在比较中有些东西不正确,我还没有弄明白。