输出的时候排列顺序是从多到少,需要去除txt中的特殊符号,注意是英文txt文件
用来自制词汇包的hhh
import re
from collections import Counter
def count_words(file_path):
# 读取文本文件内容
with open(file_path, 'r', encoding='utf-8') as file:
text = file.read()
# 去除特殊符号,并将文本转换为小写
cleaned_text = re.sub(r'[^a-zA-Z\s]', '', text).lower()
# 使用 Counter 统计单词出现次数
word_counts = Counter(cleaned_text.split())
# 按照出现次数从多到少排序
sorted_word_counts = sorted(word_counts.items(), key=lambda x: x[1], reverse=True)
return sorted_word_counts
def main():
file_path = 'your_text_file.txt' # 替换为你的文件路径
word_counts = count_words(file_path)
# 输出结果
for word, count in word_counts:
print(f'{word}: {count}')
if __name__ == "__main__":
main()
汉字出现次数
Python怎么读取txt文件内容,并统计每个词重复出现的次数? - 知乎 (zhihu.com)
# !!!!汉字统计出现次数!!!!标签:word,python,次数,rate,file,line,txt From: https://www.cnblogs.com/jane656/p/17997768
# 打开文件
fr = open('txtBooks/hp词汇中英.txt', 'r', encoding='utf-8')
# 把f=open('./dat文件/song.dat',encoding='utf-8')这句改成
# f=open('./dat文件/song.dat',encoding='gbk')
# f=open('./dat文件/song 1.dat',encoding='gb18030')
# 读取文件所有行
content = fr.readlines()
contentLines = ''
characers = [] # 存放不同字的总数
rate = {} # 存放每个字出现的频率
# 依次迭代所有行
for line in content:
# 去除空格
line = line.strip()
# 如果是空行,则跳过
if len(line) == 0:
continue
contentLines = contentLines + line
# 统计每一字出现的个数
for x in range(0, len(line)):
# 如果字符第一次出现 加入到字符数组中
if not line[x] in characers:
characers.append(line[x])
# 如果是字符第一次出现 加入到字典中
if line[x] not in rate:
rate[line[x]] = 1
# 出现次数加一
rate[line[x]] += 1
# 对字典进行倒数排序 从高到低 其中e表示dict.items()中的一个元素,
# e[1]则表示按 值排序如果把e[1]改成e[0],那么则是按键排序,
# reverse=False可以省略,默认为升序排列
rate = sorted(rate.items(), key=lambda e: e[1], reverse=True)
print('全文共有%d个字' % len(contentLines))
print('一共有%d个不同的字' % len(characers))
print()
for i in rate:
print("[", i[0], "] 共出现 ", i[1], "次")
fr.close()