私は、txtファイルからすべての単語をピックアップし、辞書的に並べ替えるPythonスクリプトを開発しています。ここではスクリプトは次のとおりです。sort()を使用してset()を使用して、重複排除された順序付きリストをPythonで使用できないようにします。
import re
with open ("test.txt") as f:
selectedWords =[]
lines = f.readlines()
for line in lines:
line = re.sub("_", ' ', line) #Different word dellimiters
words=re.findall(r"[\w']+", line.lower())
for word in words:
if re.search(r"[\d']+", word):#delete invalid words such as h2llo
continue
else:
selectedWords.append(word)
selectedWords.sort()
selectedWords=set(selectedWords)
for i in selectedWords:
print i
f.close()
例入力は次のとおりです。
to be or not
to
be that is
the q2estion
と予想される出力は次のとおりです。
be
is
not
or
that
the
to
ちょうどあなたの質問は何ですか?最後の 'f.close()'は 'with'構造体が終了したときに' f'が閉じられるので、エラーを返しませんか? –
何かをセットに変換すると、フィルタリングされた要素のソートされたリストが必要な場合、要素の順序が失われます。あなたは、セットを作成してそれらをフィルタリングし、次にリストに戻って(注文を維持することができる)、そしてそれをソートしたいと思う! – chatton
今後、http://stackoverflow.com/help/mcveに記載されているように、あなたのリピーターを最小限に抑えるよう努めてください。つまり、ファイルから読み込む代わりに、プログラムでハードコードされたリストを使用して同じ問題が発生する可能性がある場合は、ファイルIOを取り出す必要があります。 (同様に、あらかじめ解析された単語だけを含めることができれば、正規表現の部分を取り除くべきです;など - 疑問のコードは他の誰かがコピー&ペーストして同じ問題を見ることができる最小のものでなければなりません)。 –