2016-12-22 4 views
0

"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.") 

しかし、私はリターンを入力して、すべてのパスワードは、でも私は確信して、リストにあるために知っているもの。

どこが間違っていますか?

+2

あなたはまた、どのような線が見えるようにすることができますか?ユーザーの入力はどのようになりますか? –

+2

Passwords.append(line.strip())は私のために働いています – davedwards

+0

@downshift:答えとして投稿する必要があります。 – BrenBarn

答えて

3

あなたのファイルの行を読んだ後、あなたのPasswordsリストの各エントリはstr.strip()、あなたが試合をチェックする前に取り除くことになるでしょう「改行」文字、'\n'を、含まれていますが、キーワードは次のように見つけることができるようにする必要があります:

for line in infile: 
     Passwords.append(line.strip()) 
-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.") 
+1

彼は部分文字列を探していない、彼はパスワードがパスワードのリストにあるかどうかを探している。 – BrenBarn

+0

正確には、文字列のリストを返すためにinfileを取得する必要がありますが、任意のptで単一の文字列を調べているわけではありません –

-1

私はこれは私が持っていた問題だと思う、多分それは、多分それはないです。この問題は末尾改行と呼ばれます。基本的には、テキスト文書でEnterキーを押すと、新しい行であることを示す特殊文字が入力されます。この問題を解決するには、モジュールlinecacheをインポートします。その後、ファイルを開いて閉じるのではなく、linecahce.getline(file, line).strip()を実行します。 これが役立つことを願っています!

+1

あなたの診断は正しいですが、あなたの提案する解決策は正しい方法ではありません。 – BrenBarn

1

これに近いものが実行されます。ファイルを読み込むと、各行を配列要素として読み取ることができます。これを試してみてくださいどのように行くのmmeを聞かせて

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.")