2017-05-15 12 views
1

「hello」などの重複した文字は含まれていないが、「helo」が含まれる単語だけを含むファイルから単語のリストを作成しようとしています。Pythonはファイルから単語のリストを作成します

単語を入力するだけで作成したリストを使用すると完全に自分のコードワードが表示されますが、ファイルリストでそれを実行しようとすると、重複する文字が含まれていてもすべての単語が印刷されます。

words = [] 
length = 5 
file = open('dictionary.txt') 
for word in file: 
    if len(word) == length+1: 
     words.insert(-1, word.rstrip('\n')) 
alpha = ["a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"] 
x = 0 
while x in range(0, len(alpha)): 
    i = 0 
    while i in range(0, len(words)): 
     if words[i].count(alpha[x]) > 1: 
      del(words[i]) 
      i = i - 1 
     else: 
      i = i + 1 
    x = x + 1 
print(words) 
+0

def has_double_letter(word):return len(word)!= len(set(word)) 'はどうですか? @KlausD。 –

+0

私は可能な場合、それをシンプルに、任意のアイデアを保つために現在の方法を維持したいですか? – EllisR

+0

次に、「動作しない」よりも優れたエラーの説明を与えます。 –

答えて

1

あなたのdictionary.txtはどのようなものですか?あなたのコードは、各単語が別々の行にある限り(ファイル中のxが行を繰り返すため)、少なくともいくつかの単語には5つの非繰り返し文字があります。また

、ヒントのカップル:

  • あなたがセットを使用して、リストや文字列の繰り返しを確認することができfile.readlines()
  • を呼び出すことによって、リストにファイルからのラインを読むことができます。セットは重複した文字がはるかに少ないコードであるかどうlen(word) == len(set(word))はあなたを教えてくれる場合:)
+0

テキストファイルは新しい行のすべての単語のリストに過ぎません。これはもっと簡単にできますが、可能であればこの方法で保存したいと思います。 – EllisR

1

をこのスニペットは、単語を追加し、我々は

words = [] 
length = 5 
file = open('dictionary.txt') 
for word in file: 
    clean_word = word.strip('\n') 
    if len(clean_word) == length + 1: 
     words.append(''.join(set(clean_word)) 

それらを挿入する前に、重複した文字を削除しますのでチェックし、すべての重複要素を削除します重複を削除セットに文字列を変換した後、我々は再び文字列にセットへの参加:

>>> word = "helloool" 
>>> set(word) 
set(['h', 'e', 'l', 'o']) 
>>> ''.join(set(word)) 
'helo' 

私はあなたがこのような重複を削除する方法は100%を確認していないので、I'vあなたの質問が "二重の手紙"ではなく "二重の手紙"を指定しているので)何の手紙も単語内に二回以上置くことはできません。

関連する問題