将文档中汉字转化为拼音并进行频数统计
记录一下做过的小项目,项目要求从txt文档中读取数据,将其中的汉字转化为拼音并统计每个拼音出现的次数(不对注音做要求)。
from pypinyin import pinyin, lazy_pinyin, Style
f = open('./character_convert/sentence.txt') #打开文件
Hashtable = dict() #创建空哈希表
while (1):
c = f.read(1) #读取一个字符
if not c:
break #若读到文件结尾则终止
if u'\u4e00' <= c <= u'\u9fff':
# 若读取字符为汉字
cp = lazy_pinyin(c)[0] #转为拼音,lazy_pinyin返回列表,我们保持字符串
# print(cp)
if cp in Hashtable.keys():
#若该拼音已经在哈希表中,则计数加一
Hashtable[cp]+=1
else:
#否则创建该项
Hashtable[cp]=1
Hashtable = sorted(Hashtable.items(), key=lambda item:item[1], reverse=True) #根据value值对哈希表排序
# print(Hashtable)
with open("result.txt","w") as f:
# 按条件保存需要的条目
for item in Hashtable:
if item[1] >= 5:
f.write(item[0]+' : '+str(item[1])+'\n')
else:
break
print('done...')
补充:
- pypinyin的使用参考https://github.com/mozillazg/python-pinyin
- 汉字的编码范围为\u4e00 - \u9fff
- lambda匿名函数:
def sq(x):
return x*x
lambda x: x*x
可以用lambda函数表示一些简单的函数
这里的
key=lambda item:item[1]
传入item,返回item[1]。