齐普夫定律是许多现实生活中的一种模式,齐普夫定律的一个常见现象是出现在文本的段落中,其中最常用的词是第二常用词的两倍。
我一直在学习Python中的字典,并尝试自己这样做,但对其中的几个方面感到困惑。你知道吗
第一步应该首先从字符串中删除标点符号(这是为了防止像“to”或“said-”这样的词在下一步中出现),然后.split
进入一个列表。然后,创建一个字典,其中键是单词,值是它们的引用,这可以使用for
循环来完成。然后,我猜想最困难的部分可能是按降序打印所有键和值。你知道吗
如果不是完整的代码,你能告诉我如何做每一步,这样我可以自己做吗?谢谢您!你知道吗
import operator, pprint
punctuater = ['`','~','!','@','#','$','%','*','(',')','-', \
'_','+','=','[','\]','{','}','|','\\','\"','\'', \
':',';','<',',','>','.','/','?','^','&']
numbers = [1,2,3,4,5,6,7,8,9,0]
def convertForZipf(string):
string = (string.lower())
for i in punctuater:
if i in string:
string = string.replace(i, '')
return string.split()
text = 'Lorem Ipsum Ipsum Ipsum Meow h h h h h n n n n n dolor dolor'
words = convertForZipf(text)
wordsRanked = {}
for i in words:
wordsRanked.setdefault(i, 0)
wordsRanked[i] += 1
wordsRanked = (str((sorted(wordsRanked.items(), key=operator.itemgetter(1), reverse=True))))
for i in wordsRanked:
try:
int(i)
wordsRanked = wordsRanked.replace(str(i), str(i)+'\n')
except ValueError:
pass
print((wordsRanked.replace('[','')
.replace('(','')
.replace(')','')
.replace(']','')
.replace(',',' : ')))
在正式完成这个项目之前,我只需要最后一件事的帮助,我的输出显示有问题,我的代码高度不一致,我愿意接受建议。你知道吗
这应该符合您的标准-我不知道您在代码末尾对for循环做了什么-您是否尝试替换数字?如果是这样的话,您可以修改我使用的regex模式。你知道吗
输出:
相关问题 更多 >
编程相关推荐