我想从txt文件中计算字母表字母的频率。不区分大写和小写字母,所以如果它是“b”或“B”则无关紧要。
我认为可以在def count_letters()中设置字母表列表 喜欢:alphabet =“abc ... xyz” 然后检查每一行的字母频率。
我有这段代码:
from tkinter import *
import tkinter.messagebox
from tkinter.filedialog import askopenfilename
import string
def show_result():
analyze_file(filename.get())
def analyze_file(filename):
try:
infile = open(filename, "r")
# ... create a list counts ...
# ... for each line call count_letters ...
infile.close()
# show histogram
histogram(counts)
except IOError:
tkinter.messagebox.showwarning("Analyze File",
"File " + filename + " does not exist")
# count each letter in the string
def count_letters(line, counts):
#code...
pass
def open_file():
filenameforReading = askopenfilename()
filename.set(filenameforReading)
...
答案 0 :(得分:3)
根据我的理解,collections.Counter
是你所追求的。
from collections import Counter
def count_letters(line):
return Counter(line.lower())
假设line
是一个字符串,这会将所有字母转换为小写字母,并返回一个类似字典的对象,其中包含所有字母的计数。
例如:
count_letters('Bananas are berries!')
将产生
Counter({
'a': 4,
'e': 3,
'r': 3,
' ': 2,
'b': 2,
'n': 2,
's': 2,
'i': 1,
'!': 1
})