単語数など、さまざまなことを知りたいテキスト ファイルのさまざまなコレクションを扱っています。これを正常に実行するコードがあり、その方法で機能するスクリプトをワークフローに導入したいと考えています。ディレクトリを介して、そこにあるテキスト ファイルの統計をコンパイルします。
これが私のドラフトです:
#! /usr/bin/env python
# Get from each text file a total word count and a unique word count.
# Output a CSV with three columns: filename, total, unique.
import glob
with open (file_name) as f, open ('countfile.csv', 'w') as out :
list_of_files = glob.glob('./*.txt)
for file_name in list_of_files:
???
out.write('{f},{t},{u}\n'.format(f =file_name, t =word_total, u =uniques)
上記の疑問符は、各ファイルで何をしたいかのプレースホルダーです。これは、以下のコードです。
# Total No. of Words
word_list = re.split('\s+', textfile.read().lower())
word_total = len(word_list)
# Unique Words
freq_dic = {}
punctuation = re.compile(r'[.?!,":;]')
for word in word_list:
# remove punctuation marks
word = punctuation.sub("", word)
# form dictionary
try:
freq_dic[word] += 1
except:
freq_dic[word] = 1
uniques = len(freq_dic)
このコードをすべて上記のコードに挿入する方法がよくわかりません。うまくいかないのではないかと思うのですが、どうすればいいのか途方に暮れています。ここで何か助けていただければ幸いです。これを理解できれば、かなりの数のことを自動化できると思います。
2 番目のコード ブロックは、おそらく最も美しいものではないことはわかっていますが、可能な限りコンパクトであり、何をしているのかを理解することもできます。間違いなくおわかりのように、私は Python を学び始めたばかりです。
明確化のために編集:
私が持っているのは、テキストのディレクトリです:
text1.txt
text2.txt
text3.txt
私が望むのは、このスクリプトをそのディレクトリに向けて、すべてのテキストを通過させ、次の形式で CSV ファイルを出力させることです。
text1, 345, 123
text2, 1025, 318
text3, 765, 245
(.txt
ファイル名を切り取る必要はありません。念のため。)