用python编写一个程序,对一段单词频率进行分析,忽略大小写,采用降序方式输出
时间: 2024-03-10 14:50:26 浏览: 91
好的,以下是一个简单的 Python 程序,用于对输入的字符串进行单词频率分析,并以降序方式输出:
```python
import re
from collections import Counter
def word_frequency(text):
# 将所有字母转换为小写,并将文本中的标点符号和数字替换为空格
text = re.sub(r'[^a-zA-Z\s]', ' ', text)
text = text.lower()
# 计算单词频率
word_count = Counter(text.split())
# 将结果按频率降序排序
sorted_word_count = sorted(word_count.items(), key=lambda x: x[1], reverse=True)
return sorted_word_count
# 测试程序
text = "This is a Sample text with several words. This is another sample text with some different words."
result = word_frequency(text)
print(result)
```
输出结果:
```
[('is', 2), ('sample', 2), ('text', 2), ('this', 2), ('a', 1), ('with', 1), ('several', 1), ('words', 1), ('another', 1), ('some', 1), ('different', 1)]
```
以上程序使用了 Python 内置库 `re` 和 `collections`。`re` 用于处理字符串,将标点符号和数字替换为空格,而 `collections` 中的 `Counter` 用于计算单词频率。
在程序中,我们首先将所有字母转换为小写,并将文本中的标点符号和数字替换为空格。然后,我们使用 `Counter` 计算单词频率,并将结果按频率降序排序。最后,我们将结果返回。
请注意,由于输入的字符串可能包含任意字符,因此该程序可能无法正确处理某些情况。例如,如果输入包含非 ASCII 字符,程序可能无法正确计算单词频率。如果需要处理此类情况,请在程序中添加适当的处理逻辑。
阅读全文