0

テキスト ファイルで特定の文字 (空白以外) が出現する回数をカウントするにはどうすればよいですか? (つまり、"," "." "a" "k" "m")

これが私がこれまでに持っているものです:

file = open("filename.txt","r")

num_char = 0
num_words = 0
num_lines = 0


for line in file:
    words = line.split()
    num_lines += 1
    num_words += len(words)
    num_char += len(line)



print ("Character count:\t" + str(num_char))
print ("Word count:\t\t" + str(num_words))
print ("Line count:\t\t" + str(num_lines))
print ("Distribution of characters: ")

これまでの配布用コード

text = file.read()
file.close()
words = text.strip()
final = words.lower()
for i in range(len(words)):
    first = final.count("a")
    second = final.count("b")
print (first)
print (second)

これにより、a と b の目的の出力が得られますが、すべての文字に対して各コード行を記述するのはあまり効率的ではありません。可能なすべての文字をループしてから、カウントを出力するにはどうすればよいですか?

4

1 に答える 1

1

collections.Counterを使用します。

from collections import Counter

file = open("filename.txt", "r")

num_char = 0
num_words = 0
num_lines = 0
char_distribution = Counter()

for line in file:
    words = line.split()
    num_lines += 1
    num_words += len(words)
    num_char += len(line)
    char_distribution += Counter(line.lower())

print("Character count:\t{}".format(num_char))
print("Word count:\t\t{}".format(num_words))
print("Line count:\t\t{}".format(num_lines))
print("Distribution of characters: ")
for char, count in sorted(char_distribution.items()):
    if char.isalpha() or char in ',.':
        print("\t{}\t\t{}".format(char, count))
于 2013-06-28T06:19:55.250 に答える