Python 在文件中查找==x的行,而不是只在其中包含x

Python 在文件中查找==x的行,而不是只在其中包含x,python,python-3.x,file,Python,Python 3.x,File,这是我的第一个问题,所以下次的建议将不胜感激 所以问题是,我似乎找不到==x的直线。我只能找到一条有x的线。如果我尝试: import time x = input("Enter password here...\n") start = time.time() with open("passwords.txt", "r") as f: for line in f: if line == x: print("Your password is " +

这是我的第一个问题,所以下次的建议将不胜感激

所以问题是,我似乎找不到==x的直线。我只能找到一条有x的线。如果我尝试:

import time
x = input("Enter password here...\n")
start = time.time()
with open("passwords.txt", "r") as f:
    for line in f:
        if line == x:
            print("Your password is " + line)
            end1 = time.time()
            print("It took " + str(float(end1 - start)) + " seconds to locate your password")
            break
        else:
            print("Passed check") 
程序将遍历列表并完成,而不打印任何内容,即使x实际上等于列表中的一个单词。但在这里它变得更有趣。。。如果你运行上面的代码,我将得到一个错误的一切我键入。。。除非我在单词列表中输入最后一个单词作为输入(x)。最后一个单词是“albert”,如果我输入它,它将返回我正在寻找的结果


我知道我是一个糟糕的解释者,但是如果你把我的主代码放进去,用单词列表试试,我会附加,然后编辑if x in line:to be
if line==x
,用密码之类的单词试试,你会发现它不起作用。然后和艾伯特试一下,如果成功了


是否有一种方法可以查看用户输入是否等于它所在的行,而不仅仅是在其中。“也就是说,单词test在testing中,它应该只返回testing is x=testing,而不只是test”

当您读取文件中的行时,您也会根据平台使用行终止符(
\n
\r\n
)来获取它们。在检查之前,请将其剥离:

if line.rstrip() == x:
    # etc.

最后一行之所以有效,是因为它后面没有新行。

当您从如下文本文件中读入一行时:

"albert"
文件将在整行中读取:

"albert\n"
因为除了最后一行之外,每一行都有换行符。因此,请将代码更改为:

import time
x = input("Enter password here...\n")
start = time.time()
with open("passwords.txt", "r") as f:
    for line in f:
        line = line.rstrip()
        if line == x:
            print("Your password is " + line)
            end1 = time.time()
            print("It took " + str(float(end1 - start)) + " seconds to locate your password")
            break
        else:
            print("Passed check") 

else:
应该在
for
语句中,而不是
if
中。否则,每一行与密码不匹配时,您都会收到该消息。@Darkstarone忘记添加txt文件,但很明显,您甚至不需要所有设备来解决问题@Barmar非常感谢您的建议,我现在正在实施!