python统计单词个数 并按照出现次数/输入顺序r)
时间: 2024-09-10 15:31:01 浏览: 82
在Python中,你可以使用内置模块`collections`中的`Counter`类来统计文本中每个单词的出现次数,并保持它们的原始输入顺序。以下是简单的步骤:
```python
from collections import Counter
def count_words(text):
# 首先,将输入文本转换为小写并分割成单词列表
words = text.lower().split()
# 使用Counter计算每个单词的出现次数
word_counts = Counter(words)
# 按照字典的默认排序(即字母顺序),返回单词及其计数
sorted_word_counts = word_counts.most_common()
return sorted_word_counts
# 示例用法
text = "Hello world! This is a test. Hello again."
word_stats = count_words(text)
print("单词按出现次数和输入顺序:")
for word, count in word_stats:
print(f"{word}: {count}")
相关问题
将键盘输入的文字保存到c:\myFile.txt中,打开该文件,统计单词出现的次数,选择re.split('.| |,|\n',a))分割字符串,对于数字可选择函数判断是不是数字或采用if语句判断并过滤,如果碰到单词的变化形式则按照原形进行统计。建立4级单词集合,统计4级单词出现的次数,输入为键盘输入文本,输出为输出单词出现的次数与4级单词集合(均为单词原形,且按照单词在原文中的顺序输出)
这是一个使用Python实现的例代码,将键输入的文字保存到文件,并统计单词现的次数和级单词集合:
python
import re
collections import Counter
def is(word):
try:
float(word)
return
except ValueError:
return
def save_text_to(file_path):
text =("请输入文本:")
with open(file_path, "w") as file:
file(text)
def count_words_path):
word_list = with open(file_path "r") as file:
for line in file:
words = re.split(r'[.,\n\s]', line)
for word words:
if not is_number(word) and word != '':
word_list.append(word.lower())
word_count = Counter(word_list)
return word_count
def filter_four_level_words(word_count):
four_level_words = set()
for word in word_count.keys():
if len(word) == 4:
four_level_words.add(word)
return four_level_words
file_path = "c:/myFile.txt"
save_text_to_file(file_path)
word_count = count_words(file_path)
four_level_words = filter_four_level_words(word_count)
print("单词出现次数:")
for word, count in word_count.items():
print(f"{word}: {count}")
print("四级单词集合:")
for word in four_level_words:
print(word)
```
这段代码会提示你输入文本,并将文本保存到指定的文件路径`c:/myFile.txt`中。然后,它会统计该文本中单词的出现次数,并输出每个单词的出现次数。接下来,它会过滤出四级单词(长度为4的单词),并输出四级单词集合。
请注意,代码中的`is_number`函数用于判断一个字符串是否为数字。它使用了`try-except`语句来检测字符串是否可以转换为浮点数,从而判断是否为数字。如果是数字,则返回`True`;否则,返回`False`。你可以根据需要自定义判断数字的逻辑。
另外,代码使用了正则表达式`re.split(r'[.,\n\s]', line)`来分割字符串。它会将字符串按照句号、逗号、换行符和空格进行分割,得到单词列表。这样可以确保较为准确地分割出单词。
编写一个程序,读取给定的文本文件,并统计文件中每个单词出现的次数。然后,将每个单词及其出现次数按照出现次数从高到低的顺序输出到一个新的文件中。 要求:忽略单词的大小写,将所有单词转换为小写进行统计。忽略标点符号和特殊字符,只考虑字母组成的单词。 输入文件(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
好的,这个问题可以用 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` 表示任意一个字母或数字字符。这样可以过滤掉标点符号和特殊字符,只保留字母组成的单词。
希望这个示例代码可以帮助你解决问题。如果有任何疑问,请随时问我。
阅读全文