python正则表达式词汇统计
时间: 2024-06-19 13:02:00 浏览: 155
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代码实现功能:接受用户输入的新闻文本,分析出其中出现频率最高的十个词汇及其各自的计数,并利用词云库生成一个可视化词云图。请提供完整的步骤和相应的代码示例。(利用正则表达式)
首先,我们需要安装必要的库,包括`jieba`用于中文分词,`collections`用于统计词汇频率,以及`wordcloud`和`matplotlib`用于绘制词云。你可以通过pip安装:
```bash
pip install jieba collections wordcloud matplotlib
```
然后,我们可以按照以下步骤编写Python代码:
1. 导入库并读取用户输入的新闻文本
2. 使用正则表达式去除非字母数字字符并分词
3. 统计词汇频率
4. 提取出现频率最高的十个词汇
5. 生成词云图
以下是完整的代码示例:
```python
import re
import jieba
from collections import Counter
from wordcloud import WordCloud, STOPWORDS
import matplotlib.pyplot as plt
# Step 1: 用户输入新闻文本
news_text = input("请输入新闻文本:")
# Step 2: 去除非字母数字字符并分词
cleaned_text = re.sub(r'[^\w\s]', '', news_text)
tokens = jieba.lcut(cleaned_text)
# Step 3: 统计词汇频率
word_counts = Counter(tokens)
# Step 4: 提取频率最高的十个词汇
top_10_words = word_counts.most_common(10)
print("出现频率最高的十个词汇及次数:")
for word, count in top_10_words:
print(f"{word}: {count}")
# Step 5: 生成词云图
stopwords = set(STOPWORDS) # 中文停用词
wordcloud = WordCloud(
font_path='simhei.ttf', # 如果需要特定字体
background_color="white",
width=800,
height=600,
stopwords=stopwords,
).generate_from_frequencies(word_counts)
plt.figure(figsize=(10, 7))
plt.imshow(wordcloud, interpolation="bilinear")
plt.axis("off")
plt.title("新闻文本高频词汇词云图")
plt.show()
```
在这个例子中,你需要有一个名为'simhei.ttf'的TrueType字体文件,因为它用于支持中文显示。如果没有,你可以下载一个包含中文字符的字体替换它。
阅读全文