import string
sentence = raw_input("Enter sentence:")
for i in string.punctuation:
sentence = sentence.replace(i," ")
word_list = sentence.split()
word_list.sort(key=str.lower)
print word_list
for j in word_list:
print j,":",word_list.count(j)
word_list.remove(j)
当我使用此代码并输入样本句子时,我的一些单词不能正确计算:
示例句子:I,are.politics:wodng!" frail A P,Python。 Python Python体弱
输出:
[' A','','体弱','体弱''我',& #39; P','政治',' Python',' Python',' Python',' wodng&# 39]
答:1 体弱:2 我:1 政治:1 Python:3 wodng:1
&#34>""和" P"?我知道问题发生在最后几行,但我不知道导致它的原因。
谢谢!
答案 0 :(得分:0)
答案 1 :(得分:0)
代码中的问题是,您从要迭代的列表中删除元素。
因此我建议通过将word_list转换为set
来分离迭代器。然后你可以迭代设置word_iter,它只包含一次每个单词。那你也不需要删除任何东西了。缺点是无序结果,因为集合是无序的。但是你可以把结果放在一个列表中,然后再订购:
import string
sentence = raw_input("Enter sentence:")
for i in string.punctuation:
sentence = sentence.replace(i," ")
word_list = sentence.split()
word_list.sort(key=str.lower)
print word_list
result = []
word_iter = set(word_list)
for j in word_iter:
print j, ':', word_list.count(j)
result.append( (j, word_list.count(j)) )
结果:
A : 1
wodng : 1
Python : 3
I : 1
P : 1
are : 1
frail : 2
politics : 1