我在一个名为“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。”,即使是我确定知道的密码也在列表中。
我哪里错了?
答案 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()
。
希望这有帮助!