python实现统计汉字/英文单词数的正则表达式
Python程序:单词和汉字数统计及频率逆序排列
想象一下你有一个庞大的文本文件,里面充满了各种各样的单词和汉字,你希望知道每个单词和汉字出现的频率,并按照频率从高到低进行排序。这个任务对于Python来说轻而易举。下面是一个简单的程序,帮助你完成这项任务。
思路简述:
1. 使用正则表达式来识别文本中的单词和汉字。
2. 通过字典来记录每个单词或汉字出现的次数。
3. 根据出现次数对字典进行排序,并逆序输出。
源码展示:
```python
!/usr/bin/python
-- coding: utf-8 --
作者:Rex
博客:
文件名:counter.py
创建日期:2010年9月20日 21:00:52
描述:使用VIM将.py文件转换为HTML。
import sys
import re
from operator import itemgetter
def readfile(filename):
with open(filename, "r") as file:
return file.read()
def divide_by_regex(content, regex):
此正则表达式仅适用于UTF-8编码
return regex.findall(content)
def update_dict(dictionary, words_list):
for word in words_list:
if word in dictionary:
dictionary[word] += 1
else:
dictionary[word] = 1
return dictionary
def main():
从bash接收文件
files = sys.argv[1:]
只编译一次正则表达式,提高效率
regex = repile("(?x) (?: [\w-]+ | [\x80-\xff]{3} )")
dictionary = {} 用于存储单词及其频率的字典
从文件中获取所有单词并更新字典
for filename in files:
content = readfile(filename) 读取文件内容
words = divide_by_regex(content, regex) 通过正则表达式获取单词列表
dictionary = update_dict(dictionary, words) 更新单词频率字典
按值对字典进行排序,并逆序输出
sorted_dict = sorted(dictionary.items(), key=itemgetter(1), reverse=True)
for item in sorted_dict:
print(item[0], item[1]) 输出单词及其频率
if __name__ == '__main__':
main()
```
附加提示与拓展:
由于该程序通过`sys.argv`接收参数,你可以通过命令`./counter.py file1 file2 ...`来运行它,它将累加指定文件中词频进行计算和输出。
可以自定义程序,例如调整正则表达式以适应特定需求。例如,使用`regex=repile("(?x) ([\w-]+ | [\x80-\xff]{3})")`可以得到包含分隔符的单词列表,便于后续操作。还可以对文件进行逐行处理以节约内存。可以使用正则表达式预处理文件内容,去除可能的HTML标签等。这些自定义功能使得该程序更加灵活和强大。
编程语言
- python实现统计汉字/英文单词数的正则表达式
- thinkPHP框架单元测试库tpunit用法示例
- 详解js私有作用域中创建特权方法
- 解析ajax事件的调用顺序
- php处理复杂xml数据示例
- Angular5中调用第三方库及jQuery的添加的方法
- PHP几个实用自定义函数小结
- jQuery链使用指南
- Javascript vue.js表格分页,ajax异步加载数据
- 简单的Html转换UBB的程序
- JS点击图片弹出文件选择框并覆盖原图功能的实现
- 使用Phantomjs和Node完成网页的截屏快照的方法
- 详解在Windows环境下访问linux虚拟机中MySQL数据库
- Vue.js实现简单ToDoList 前期准备(一)
- js+html制作简单验证码
- promise处理多个相互依赖的异步请求(实例讲解)