我无法找到解决问题的办法,也许有人可以提供帮助。我有一首诗,并且能够显示最常用的单词,尽管我希望所有少于5个字符的字符串都不会出现在我说的前20个最常用列表中。
import collections
import re
words = re.findall(r'\w+', open('some_poem.txt').read().lower())
most_common = collections.Counter(words).most_common(20)
print(most_common)
是否有一种简便的方法来添加这种功能?是否不显示5个字符或更少的字符串?预先感谢
答案 0 :(得分:2)
{ k: v for k, v in most_common.items() if v > 5 }
只是一个字典,因此我们可以使用字典理解来过滤所需的结果:
{{1}}
答案 1 :(得分:1)
如果“少于5个字符”是指“少于5个字符长”,则可以使用{5,}
(五个或更多)而不是{{ 1}}(一个或多个):
+
以下不是您要的 ,但是根据您的实际需求,获取stop words中的words = re.findall(r'\w{5,}', open('some_poem.txt').read().lower())
并对其进行过滤可能更有用从单词列表中查找,因为很可能存在少于五个字母的“相关”单词,而有多个字母的不相关单词。
set
此外,如评论所述,出于完整性考虑,您应该养成使用stop_words = set("a,able,about,across,...,you,your".split(","))
words = re.findall(r'\w+', open('some_poem.txt').read().lower())
words = [word for word in words if word not in stop_words]
打开文件以确保之后正确关闭文件的习惯。
with