在文本文件中搜索关键字

时间:2016-12-22 02:22:08

标签: python python-3.x search text

我在一个名为“SortedUniqueMasterList.txt”的文本文件中有一个密码列表。我正在编写一个程序,它接受用户输入并检查输入的密码是否在列表中。

这是我的代码:

Passwords = []

with open("SortedUniqueMasterList.txt", "r", encoding = "latin-1") as infile:
    print("File opened.")
    for line in infile:
        Passwords.append(line)
    print("Lines loaded.")

while True:
    InputPassword = input("Enter a password.")
    print("Searching for password.")
    if InputPassword in Passwords:
        print("Found")
    else:
        print("Not found.")

但是,我输入的每个密码都会返回“Not found。”,即使是我确定知道的密码也在列表中。

我哪里错了?

4 个答案:

答案 0 :(得分:3)

在阅读文件中的行后,Passwords列表中的每个条目都会包含一个“新行”字符'\n',您需要在检查匹配项之前将其删除,{{ 1}}应该允许像这样找到关键字:

str.strip()

答案 1 :(得分:1)

更接近此运行 - 当您读取文件时,您可以将每一行作为数组元素读取。试试这个让我知道它是怎么回事

with open("SortedUniqueMasterList.txt", "r") as infile:
    print("File opened.")
    Passwords = infile.readlines()
    print("Lines loaded.")

while True:
    InputPassword = input("Enter a password.")
    InputPassword  = str(InputPassword)
    print("Searching for password.")
    if InputPassword in Passwords:
        print("Found")
    else:
        print("Not found.")

答案 2 :(得分:-1)

问题是你无法在python列表中查找子字符串。如果在任何元素中找到子字符串,则必须遍历列表检查,然后确定是否找到了它。

Passwords = []

with open("SortedUniqueMasterList.txt", "r", encoding = "latin-1") as infile:
    print("File opened.")
    for line in infile:
        Passwords.append(line)
    print("Lines loaded.")

while True:
    InputPassword = input("Enter a password.")
    print("Searching for password.")
    found = False
    for i in Passwords:
        if InputPassword in i:
            found = True
            break
    if found:
        print("Found.")
    else:
        print("Not found.")

答案 3 :(得分:-1)

我认为这是我遇到的一个问题,也许是,也许它不是。该问题称为尾随换行符。基本上,当您在文本文档上按Enter键时,它会输入一个特殊字符,表示它是一个新行。要解决此问题,请导入模块linecache。然后,您不必打开文件并关闭它,而是linecahce.getline(file, line).strip()。 希望这有帮助!