python实现统计汉字/英文单词数的正则表达式

网络编程 2025-03-29 01:59www.168986.cn编程入门

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标签等。这些自定义功能使得该程序更加灵活和强大。

上一篇:thinkPHP框架单元测试库tpunit用法示例 下一篇:没有了

Copyright © 2016-2025 www.168986.cn 狼蚁网络 版权所有 Power by