计算文本文件中字母的频率[关闭]
问题内容:
从目前的情况来看,这个问题不适合我们的问答形式。我们希望答案能得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。
8年前关闭。
在python中,如何遍历文本文件并计算每个字母的出现次数?我意识到我可以只使用“ for x in
file”语句来处理它,然后设置26个左右的ifif语句,但是肯定有更好的方法吗?
谢谢。
问题答案:
from collections import Counter
with open(file) as f:
c = Counter()
for line in f:
c += Counter(line)
如果文件不是很大,则可以将所有文件作为字符串读取到内存中,并通过Counter
一行代码将其转换为对象:
c = Counter(f.read())
例:
>>> c = Counter()
>>> c += Counter('aaabbbcccddd eee fff ggg')
>>> c
Counter({'a': 3, ' ': 3, 'c': 3, 'b': 3, 'e': 3, 'd': 3, 'g': 3, 'f': 3})
>>> c += Counter('aaabbbccc')
Counter({'a': 6, 'c': 6, 'b': 6, ' ': 3, 'e': 3, 'd': 3, 'g': 3, 'f': 3})
或使用count()
字符串方法:
from string import ascii_lowercase # ascii_lowercase =='abcdefghijklmnopqrstuvwxyz'
with open(file) as f:
text = f.read().strip()
dic = {}
for x in ascii_lowercase:
dic[x] = text.count(x)