介绍
这篇文章主要介绍了python如何实现统计汉字/英文单词数的正则表达式,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获、下面让小编带着大家一起了解一下。
思路
?使用正则式“x (?) (?:[\ w -] + | [\ x80 - \ xff]{3}),获得utf - 8文档中的英文单词和汉字的列表。
?使用字典来记录每个单词/汉字出现的频率,如果出现过则+ 1,如果没出现则置1。
?将字典按排照值序,输出。
源码
# !/usr/bin/python #,- *安康;编码:utf-8 - * - # #作者:雷克斯 #博客:http://iregex.org # filename counter.py #创建:,Mon Sep 20 21:00:52 2010 # desc:, convert .py  file 用html with VIM。 import 系统 import 再保险 得到operator import  itemgetter def readfile (f): with 文件(f,“r"), as pFile: return pFile.read () def 分裂(c, regex): #,regex below  is only valid for utf8 编码 return regex.findall (c) 李def update_dict (di): for 小姐:李:拷贝 if di.has_key(我): di[我]+=1 其他: di[我]=1 di return def main (): # receive files 得到bash 文件=sys.argv [1:] # regex compile only 一次 regex=re.compile (“x (?), (?: [\ w -] +, |, [\ x80 - \ xff] {3},)“) dict={} # get all words 得到文件 for f 拷贝文件: 话说=分裂(readfile (f),,正则表达式) dict=update_dict (dict,字) # sort dictionary by 价值 # dict is 你a 列表。 dict=排序(dict.items(),,关键=itemgetter(1),反向=True) # output 用标准输出 for 小姐:dict拷贝: print 我[0],[1] if __name__==& # 39; __main__ # 39;: main ()
提示
由于使用了=sys文件。argv[1:]来接收参数,因此。/计数器。py file1 file2……可以将参数指定的文件的词频累加计算输出。
可以自定义该程序,例如,
?使用
regex=re.compile (“x (?), (, (\ w -) + |, [\ x80 - \ xff] {3},)“), 话说=[w for w 拷贝regex.split(线),if w)
这样得到的列表是包含分隔符在内的单词列表,方便于以后对全文分词再做操作。
?以行为单位处理文件,而不是将整个文件读入内存,在处理大文件时可以节约内存。
?可以使用这样的正则表达式先对整个文件预处理一下,去掉可能的html标签:内容=re.sub (r" & lt;[^祝辞)+“,““,内容),这样的结果对于某些文档更精确。
感谢你能够认真阅读完这篇文章,希望小编分享的“python如何实现统计汉字/英文单词数的正则表达式”这篇文章对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,更多相关知识等着你来学习!