おはよう。必要なヘルプをお願いします。使用される言語はPythonです。以下のコードは、テキストファイルから読み込んだ後、改行ごとに各単語の頻度を返します。私は、以上のことから、このサイトからhttps://rmtheis.wordpress.com/2012/09/26/count-word-frequency-with-python/テキストファイルから読み込み、新しいテキストファイルに単語の頻度を保存します。
import re
from collections import Counter
def openfile(filename):
fh = open(filename, "r+")
str = fh.read()
fh.close()
return str
def removegarbage(str):
# Replace one or more non-word (non-alphanumeric) chars with a space
str = re.sub(r'\W+', ' ', str)
str = str.lower()
return str
def getwordbins(words):
cnt = Counter()
for word in words:
cnt[word] += 1
return cnt
def main(filename, topwords):
txt = openfile(filename)
txt = removegarbage(txt)
words = txt.split(' ')
bins = getwordbins(words)
for key, value in bins.most_common(topwords):
print(key, value)
main('hamlet.txt', 500)
をそれを得た、それは私が使用しているIDE(pyCharm)に罰金印刷します。しかし、私は
#Write to file
with open("newFile.txt", "w") as f:
for word in main('hamlet.txt', 500):
f.write(word + os.linesep)
、ちょうど上記のコードの下に次のコードを追加するときには、コンソール罰金に印刷んが、は多少の誤差を示し、または私が作成したテキストファイルに書き込めませんでしたまったく。 .Belowは、テキストファイルを読み込んだ後、コンソール上のサンプル出力を示すスニペットで、それは印刷します
the 16
of 12
to 9
search 9
which 6
だから今、私はテキスタイルのテキストfile.Theコンテンツに、この上記の出力を書きたいはるかに長いですしかし、上記よりも。ありがとうございました。ちなみに、エラーがコンソールに乗っ
Traceback (most recent call last):
File "/Users/test/PycharmProjects/Trial/trial.py", line 52, in <module>
for word in main("hamlet.txt", 500):
TypeError: 'NoneType' object is not iterable
、それを印刷するには、応答をありがとうございました。あなたがアドバイスしたように私は試みました。それは繊維に保存されたが、周波数を示さない。しかし、私が以前に述べたように、結果はテキストファイルに保存しなければならず、頻度も保存しなければなりません。上記のサンプル出力と同じです。だからどうすればここで私を助けることができますか?もう一度ありがとう... – user3761841
@ user3761841この場合、ジェネレータは両方の値を生成できます。これらは出力ファイルに書き込まれます。私はそれに応じて答えを更新しました。 – ewcz
'それはトリックでした....うわー、ありがとう。 Pythonはちょっと変わっているようですが、私はJavaのバックグラウンドを使っています... Thankssss a lot .. ' – user3761841