Python 中英文词频统计(字典类型 jieba库应用)

def Get_Text():
    txt=open("hamlet.txt","r").read()
    txt=txt.lower()#将全文变为小写
    for ch in '''!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~''':#将文章中的特殊字符用空格代替
        txt=txt.replace(ch," ")
    return txt

hamlet_txt = Get_Text()
words = hamlet_txt.split()#拆分字符串。可以指定分隔符对字符串进行切片,并返回分割后的字符串结果,该结果是一个列表
                        #当不给split函数传递任何参数时,分隔符sep会采用任意形式的空白字符:空格、tab、换行、回车以及formfeed。
                        #split('\n')只有换行被作为分隔符
counts={}
for word in words:
    counts[word]=counts.get(word,0)+1#创建字典类型 并通过历史查询和 +1 实现单词和次数的统计匹配
it = list(counts.items())#将字典类型转化为列表
Len= len(it)
it.sort(key=lambda x:x[1],reverse=True)#key=lambda x:x[1]指按照it的第一维的数据为基准进行排序  reverse=True倒序排列
                                        #PS: 'dict' object has no attribute 'sort'
for i in range(10):
    word,count=it[i]
    print("{0:<10}{1:>5}".format(word,count))
print(it)

#对于中文文章的词频统计 可以利用jieba库进行
'''
import jieba
txt=open("hhhhhh.txt","r",encoding="utf-8").read()
words=jieba.lcut(txt)#等价于上面的words jieba精确模式 返回一个列表类型的分词结果
excludes={"具有","努克"}
for word in words:
    if len(word)==1:#可以在遍历中将单个的词 如的 了 你 排除在外
        continue
    else:
        counts[word]=counts.get(word,0)+1

for word in excludes:
    del counts[word]#前面给出字典”黑名单“ 这里通过for将黑名单中的单词删除
'''


#dict_items([('the', 1143), ('tragedy', 3), ('o
#[('the', 1143), ('and', 966), ('to', 762), ('of', 669), ('i',
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值