英语字符和中文字符的区别在于:大小写字符和字符个数(中文中是一个词语)
统计英语字符:
def getText():
txt=open(‘halmet.txt’,’r’).read()
txt=txt.lower() #文中所有英语小写
for ch in ‘!@#$%^&*()<>?”:{}|’:
txt = txt.replace(ch,’’)
return txt
halmetTxt=getText()
words=halmetTxt.split()
counts={}
for word in words:
counts[word]=couts.get(word,0)+1
items=list(counts.items())
item.sort(key=lambda x:x[1],reverse=True)
for i in range(10):
word,count=items[i]
print(‘{0:<10}{1:>5}’.format(word,count))
jieba库:中文分词
jiebe.lcut(s) 精确模式
jieba.lcut(s,cut_all=True) 全模式
jieba.lcut_for_search(s) 搜索引擎模式
中文字符(使用jieba库):
import jieba
f=open(‘红楼梦.txt’.’r’)
txt=f.read()
f.close()
words=jieba.lcut(txt)
counts]{}
for word in words:
if len(word)==1:
continue
else:
counts[word]=counts.get(word,0)+1
items=list(counts.items())
item.sort(key=lambda x:x[1],reverse=True)
for i in range(10):
word,count=items[i]
print(‘{0:<10}{1:>5}’.format(word,count))
如查找人物名字的出现频次将会出现许多无关的答案。所以可以用excludes进一步完整代码。
添加的部分我在下面都加了括号。
import jiebe
(exclude={‘’,’’,’’})
f=open(‘红楼梦.txt’.’r’)
txt=f.read()
f.close()
words=jieba.lcut(txt)
counts]{}
for word in words:
if len(word)==1:
continue
else:
counts[word]=counts.get(word,0)+1
(for word in excludes:
del(counts[word]) )
items=list(counts.items())
item.sort(key=lambda x:x[1],reverse=True)
for i in range(10):
word,count=items[i]
print(‘{0:<10}{1:>5}’.format(word,count))
进一步可用wordcloud库进一步进行展示。