python正则表达式词汇统计
时间: 2024-06-19 13:02:00 浏览: 9
Python中的正则表达式(Regular Expression,简称regex)是一种强大的文本处理工具,用于搜索、替换和提取字符串中的模式。对于词汇统计,你可以使用re模块来匹配和计数文本中的特定单词或字符模式。
词汇统计通常涉及以下步骤:
1. **模式定义**:使用正则表达式的特殊语法定义你想要匹配的词汇,例如字母、数字、空格、标点符号等。
2. **文本预处理**:清理文本,去除特殊字符,将文本转换为小写(以便不区分大小写),并分隔成单词列表。
3. **匹配和计数**:遍历单词列表,使用`re.findall()`或`re.finditer()`函数匹配正则表达式,然后计数匹配到的次数。
下面是一个简单的例子,展示如何统计一个字符串中单词的个数:
```python
import re
def word_count(text):
# 使用正则表达式匹配所有的单词
words = re.findall(r'\b\w+\b', text.lower())
# 创建一个字典来存储每个单词及其出现次数
word_dict = {word: words.count(word) for word in set(words)}
return word_dict
text = "This is a sample text with some words repeated."
word_stats = word_count(text)
print("Word statistics:", word_stats)
相关问题
python统计红楼梦人物
要统计红楼梦中的人物,我们可以使用Python中的一些文本处理技术,例如自然语言处理和正则表达式。
以下是一个简单的Python脚本,可以从《红楼梦》中提取出人物,并计算每个人物在小说中出现的次数。
```python
import re
# 读取红楼梦文本
with open('红楼梦.txt', 'r', encoding='utf-8') as f:
text = f.read()
# 使用正则表达式提取人名
pattern = re.compile('[\u4e00-\u9fa5]{2,4}(?:·[\u4e00-\u9fa5]{2,4})*')
names = re.findall(pattern, text)
# 统计人名出现次数
name_count = {}
for name in names:
name_count[name] = name_count.get(name, 0) + 1
# 按出现次数排序
sorted_name_count = sorted(name_count.items(), key=lambda x: x[1], reverse=True)
# 输出前20个人名及出现次数
for name, count in sorted_name_count[:20]:
print(name, count)
```
该脚本首先读取红楼梦文本,然后使用正则表达式提取文本中的人名。接着,它使用一个字典来记录每个人名出现的次数,并按照出现次数对人名进行排序。最后,它输出前20个人名及其出现次数。
请注意,这只是一个简单的示例,可能会漏掉一些人名或者将一些非人名的词汇误判为人名,因此结果仅供参考。
Python 词频统计之哈姆雷特
好的,Python 词频统计是一种统计文本中词汇出现次数的方法,可以帮助我们更好地了解文本的特征和内容。下面我为你演示一下如何用 Python 对《哈姆雷特》进行词频统计。
首先,我们需要一个文本文件,这里我将使用《哈姆雷特》的英文版文本文件。你可以在网上搜索到该文件并下载到本地。
然后,我们可以使用 Python 自带的文本处理模块 `re` 和 `collections` 来进行词频统计。具体代码如下:
```python
import re
from collections import Counter
# 读取文本文件
with open('hamlet.txt', 'r') as f:
text = f.read().lower()
# 使用正则表达式分割单词
words = re.findall('\w+', text)
# 统计词频
word_count = Counter(words)
# 输出前 10 个出现次数最多的单词
for word, count in word_count.most_common(10):
print(word, count)
```
代码中,我们首先使用 `open` 函数读取文本文件,并将文本内容转换为小写字母,以便统计时不区分大小写。然后使用正则表达式 `\w+` 分割单词,`\w` 表示任意一个单词字符(字母、数字、下划线),`+` 表示匹配多个连续的单词字符。接着使用 `Counter` 统计单词出现次数,并使用 `most_common` 方法输出前 10 个出现次数最多的单词和对应的出现次数。
你可以将代码保存为一个 `.py` 文件并在命令行中运行,或者直接在 Python 解释器中逐行执行,得到类似下面的统计结果:
```
the 1159
and 711
to 706
of 670
i 574
a 548
you 457
my 452
in 417
hamlet 358
```
这样,我们就完成了对《哈姆雷特》的词频统计。
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)