我有一个小程序,它查看文本文件并显示单词使用了多少时间。它不打印单词,而是打印最常用的字母,而不是单词,我不明白问题出在哪里。
import re
from collections import Counter
words = re.findall(r'\w', open('words.txt').read().lower())
count = Counter(words).most_common(8)
print(count)
答案 0 :(得分:1)
我希望这会有所帮助,这是一个正则表达式答案,应该一个字一个字地
import re
with open("words.txt") as f:
for line in f:
for word in re.findall(r'\w+', line):
# word by word
如果您的数据周围没有引号,并且一次只想要一个单词(忽略文件中空格和换行符的含义),请尝试以下操作:
with open('words.txt','r') as f:
for line in f:
for word in line.split():
print(word)
答案 1 :(得分:0)
import string
words = open('words.txt').read().lower()
# skip punctuation
words = words = words.translate(str.maketrans('', '',string.punctuation)).split()
count = Counter(words).most_common(8)
答案 2 :(得分:0)
regex
\w
中的只是任何字符,而不是任何单词。您可以获取以下单词的列表:
words= ' '.split( open('words.txt').read().lower())
然后执行您正在做的事情:
count = Counter(words).most_common(8)
print(count)
我想就足够了,告诉我它是否不起作用。
答案 3 :(得分:0)
假设您有以下文本文件:
Lorem ipsum dolor坐在amet,安全adipiscing精英,sed做 厄瓜多尔临时劳动者和劳动者联合会。 Ut Enim广告 最小的veniam,quis nostrud锻炼ullamco labisnis ut aliquip ex ea commodo结果。 Duis aute irure dolor in 在深情的天鹅绒中重新演绎 壁画准圣人occaecat cupidatat非偶然的,在 尽职尽责的犯罪行为。
您要计算单词频率:
import operator
with open('text.txt') as f:
words = f.read().split()
result = {}
for word in words:
result[word] = words.count(word)
result = sorted(result.items(), key=operator.itemgetter(1), reverse=True)
print(result)
您将获得一个单词列表,其中每个单词的出现次数以降序排列:
[('in',3),('dolor',2),('ut',2),('dolore',2),('Lorem',1), (“ ipsum”,1),...