python使用正则表达式统计字符串中出现次数最多的单词的代码
时间: 2023-11-28 10:22:16 浏览: 270
同样可以使用Python的正则表达式模块re和collections模块来实现字符串中出现次数最多的单词的统计。
下面是一个示例代码:
```python
import re
from collections import Counter
# 定义要匹配的正则表达式
pattern = r'\b\w+\b'
# 定义待匹配的字符串
text = 'This is a test sentence. This is another test sentence.'
# 使用正则表达式找出所有单词,并统计出现次数
cnt = Counter(re.findall(pattern, text))
# 找到出现次数最多的单词
most_common_word = cnt.most_common(1)[0][0]
print(f"The most common word is: {most_common_word}")
```
输出结果为:
```
The most common word is: This
```
这个代码使用了正则表达式找出字符串中的所有单词,并使用collections模块中的Counter类进行统计。最后,通过Counter类的most_common方法找到出现次数最多的单词。
相关问题
请使用py3实现所需功能: 将文本中的所有字符读入程序中 使用正则表达式(regex)从文本中提取出所有单词 对每个单词进行如下处理: a. 如果长度大于15,截取前15个字符 b. 计数器+1,表示单词出现次数 对单词数量进行排序,统计词频最高的10%的单词。 输出不同单词的个数和词频最高的前10%的单词。
好的,我可以帮你实现这个功能。首先,你需要准备一个文本文件作为输入,然后安装Python的正则表达式库re。在终端中输入以下命令安装re库:
```
pip install re
```
接下来,你可以使用下面的代码来实现所需功能:
```python
import re
# 读入文本并将其转换为字符串
with open('input.txt', 'r') as f:
text = f.read()
# 使用正则表达式提取所有单词
words = re.findall(r'\b\w+\b', text)
# 对单词进行处理
word_counts = {}
for word in words:
# 如果单词长度大于15,截取前15个字符
if len(word) > 15:
word = word[:15]
# 计数器+1,表示单词出现次数
if word not in word_counts:
word_counts[word] = 0
word_counts[word] += 1
# 对单词数量进行排序并统计词频最高的10%的单词
sorted_word_counts = sorted(word_counts.items(), key=lambda x: x[1], reverse=True)
total_words = len(sorted_word_counts)
top_words = sorted_word_counts[:int(total_words*0.1)]
# 输出不同单词的个数和词频最高的前10%的单词
print("不同单词的个数为:", len(sorted_word_counts))
print("词频最高的前10%的单词为:")
for word, count in top_words:
print(word, count)
```
你可以将上述代码保存为一个py文件,例如`word_counter.py`。然后在终端中使用以下命令运行程序:
```
python word_counter.py
```
注意,以上代码只是一个简单的示例,可能无法处理所有情况。例如,它将“Hello”和“hello”视为两个不同的单词。如果你需要更精细的处理,请自行修改代码。
阅读全文