Pythonで与えられたファイルの文字数をカウントする
1247 ワード
Pythonでは、コレクションモジュールをコンテナデータ型として使用します.Pythonの汎用ビルトインコンテナ、dict、list、set、tupleの代替案を提供することで、特殊なコンテナデータ型を実装します.このモジュールは、カウンタとして知られているハッシュ可能なオブジェクトを数えるためのdict subclassを持っています.キーと値に制限なしで、カウンタクラス自体は辞書サブクラスとみなされます.値はカウントを表す数値であることを意図していますが、valueフィールド内に何かを格納します.ゼロまたは負のカウントを含む、このカウントは任意の整数値を許可されます.カウンタークラスは他の言語のバッグやマルチセットに似ています.
指定したファイルの文字数をカウントする
全然言葉を割らない文字列を直接カウンタに渡すと文字ごとのカウントが更新されます.入力ファイルのフラグ“r”と出力ファイルのフラグ“w”を使用します.また、最初にすべてのカウントを収集することができますし、出力ファイルを曲げて書くだけです.
インポートカウンタから
指定したファイルの文字数をカウントする
全然言葉を割らない文字列を直接カウンタに渡すと文字ごとのカウントが更新されます.入力ファイルのフラグ“r”と出力ファイルのフラグ“w”を使用します.また、最初にすべてのカウントを収集することができますし、出力ファイルを曲げて書くだけです.
インポートカウンタから
def count_letters(in_filename, out_filename):
counts = Counter()
with open(in_filename, "r") as in_file:
for chunk in iter(lambda: in_file.read(8196), ''):
counts.update(chunk)
with open(out_filename, "w") as out_file:
for letter, count in counts.iteritems():
out_file.write('{}:{}\n'.format(letter, count)```
It should be note that, the inputfile is processed in 8kb chunks instead of in one go; you'll adjust the block size (preferably in powers of 2) to maximise throughput.
If you would like your output file to be sorted by frequency (descending), then you could also use .most_common() rather than .iteritems().
Reference
この問題について(Pythonで与えられたファイルの文字数をカウントする), 我々は、より多くの情報をここで見つけました https://dev.to/kodlogs/count-frequency-of-characters-in-a-given-file-in-python-16ccテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol