对python之禅进行词频统计,并按词出现的次数从多到少依次输出。出现次数相同的情况下,按词的长短从长到短排列输出。 输出格式示例: 20 is 18 the 18 ok 17 pass
时间: 2024-03-20 18:43:28 浏览: 52
好的,我已经明白了你的要求。下面是实现代码:
```python
import re
with open('zen_of_python.txt', 'r') as f:
text = f.read()
words = re.findall(r'\w+', text.lower())
freq_dict = {}
for word in words:
if word in freq_dict:
freq_dict[word] += 1
else:
freq_dict[word] = 1
sorted_words = sorted(freq_dict.items(), key=lambda x: (-x[1], len(x[0])))
for word, freq in sorted_words:
print('{:<10}{}'.format(word, freq))
```
说明:
- 首先读取文件中的文本内容,并将所有单词转换为小写字母。
- 然后使用正则表达式提取所有单词,并统计它们出现的次数,将结果存储在字典 `freq_dict` 中。
- 最后,根据单词出现次数和长度进行排序,并按照指定格式输出结果。
需要注意的是,在输出结果时,我使用了格式化字符串 `{:<10}{},其中`{:<10}`表示左对齐并占用 10 个字符的空间,`{}`表示后面的参数 `word` 和 `freq`。这样可以保证输出的对齐和美观。
阅读全文