我的作业问题是编写一个名为LetterCount()的Python函数,该函数将字符串作为参数并返回字母计数字典。但是,我的代码包括空格和逗号作为字典的一部分,我不想要。 你能帮帮我吗?如何从列表中删除空格?这是我的代码?
import string
def LetterCount(str):
str= str.lower().strip()
str = str.strip(string.punctuation)
list1=list(str)
lcDict= {}
for l in list1:
if l in lcDict:
lcDict[l] +=1
else:
lcDict[l]= 1
print lcDict
LetterCount("Abracadabra, Monsignor")
答案 0 :(得分:3)
from collections import Counter
def LetterCount(text):
return Counter(c for c in text.lower() if c.isalpha())
答案 1 :(得分:2)
您还可以检查l是否是字母字符(if l.isalpha()
)
示例:
import string
def LetterCount(str):
str= str.lower().strip()
str = str.strip(string.punctuation)
list1=list(str)
lcDict= {}
for l in list1:
if l.isalpha():
if l in lcDict:
lcDict[l] +=1
else:
lcDict[l]= 1
print lcDict
LetterCount("Abracadabra, Monsignor")
答案 2 :(得分:1)
在else
分支中分配计数之前,应检查l
是否为字母。只有当它是一个字母时才分配计数。
答案 3 :(得分:1)
从python doc(注意前导和尾随方面):
string.strip(s [,chars])返回一份副本 领先和的字符串 尾随字符已删除。如果是chars 省略或无,空白 字符被删除。如果给予和 不是没有,字符必须是一个字符串;该 字符串中的字符将是 剥离了两端 string调用此方法。
版本2.2.3中更改:字符 参数已添加。字符 参数不能在之前传递 2.2版本。
你应该看看str.replace()和DefaultDict:)
答案 4 :(得分:1)
您希望str.translate
代替str.strip
。
答案 5 :(得分:1)
另一种选择是使用filter()
filter(str.isalpha, "Abracadabra, Monsignor")
'AbracadabraMonsignor'
(请小心在代码中使用它 - 您使用相同名称的变量隐藏内置str
。永远不要调用变量str
。)
答案 6 :(得分:0)
我不想为你做功课,因为我不会这样做会对你有所帮助,但我会尽力让你朝着正确的方向努力,试试这个:
alphabet = map(chr, range(97, 123))
或
alphabet2 = list(string.lowercase)
alphabet
和alphabet2
将包含列表中字母表中的所有小写字母。
感谢余下的eumiro!
答案 7 :(得分:0)
对于字母计数,最好的方法是使用字典。
{'a': 2, ' ': 4, 'c': 1, 'b': 2, 'e': 2, 'g': 1, 'i': 3, 'j': 1, 'm': 2, 'l': 1, 'o': 1, 'n': 2, 's': 2, 'r': 1, 'u': 1, 't': 3}
输出:
prepend M