编写一个程序,读取给定的文本文件,并统计文件中每个单词出现的次数。然后,将每个单词及其出现次数按照出现次数从高到低的顺序输出到一个新的文件中。 要求:忽略单词的大小写,将所有单词转换为小写进行统计。忽略标点符号和特殊字符,只考虑字母组成的单词。 输入文件(input.txt)的内容: Hello, how are you? How's your day going? Are you enjoying programming? Programming is fun! 输出结果应为: how: 2 are: 2 you: 2 programming: 2 hello: 1 your: 1 day: 1 going: 1 enjoying: 1 is: 1 fun: 1
时间: 2024-02-17 21:01:16 浏览: 124
好的,这个问题可以用 Python 编程语言来解决。下面是一个示例代码:
```python
import re
# 读取文件内容
with open('input.txt', 'r') as file:
content = file.read()
# 统计单词出现次数
word_count = {}
words = re.findall(r'\b\w+\b', content.lower())
for word in words:
if word in word_count:
word_count[word] += 1
else:
word_count[word] = 1
# 按照出现次数从高到低排序
sorted_words = sorted(word_count.items(), key=lambda x: x[1], reverse=True)
# 输出结果到文件
with open('output.txt', 'w') as file:
for word, count in sorted_words:
file.write(f'{word}: {count}\n')
```
这个程序首先读取指定的文件 `input.txt`,然后使用正则表达式找出所有的单词,并将单词转换为小写格式。统计每个单词出现的次数,并将结果保存在字典 `word_count` 中。
接着,使用 Python 内置的 `sorted` 函数对 `word_count` 中的内容进行排序,按照出现次数从高到低的顺序排列。最后将排序后的结果输出到指定的文件 `output.txt` 中。
注意,在正则表达式中,`\b` 表示单词的边界,`\w` 表示任意一个字母或数字字符。这样可以过滤掉标点符号和特殊字符,只保留字母组成的单词。
希望这个示例代码可以帮助你解决问题。如果有任何疑问,请随时问我。
阅读全文