我正在使用从collections模块导入的most_common()函数来显示字符串中最常见的字母,但是遇到了一些我不知道如何解决的问题。
import collections
from collections import Counter
message = "Hello, how are you today? "
common = Counter(message).most_common(3)
print (common)
我不明白该怎么做:
过滤最终输出,使3个most_common字符为字母,而不是空格或撇号。
自己获取3个最常见的字母(使其等于变量)所以我可以单独使用它,我已经尝试在下面的代码中执行此操作但它没有用,所以我没有想法。
import collections
from collections import Counter
message = "Hello, how are you today? "
common = Counter(message).most_common(3)
firstletter = Counter(message).most_common(1)[0][0]
print(firstletter)
print (common)
对于第二个问题,我暂时这样做了:
common = Counter(message.replace(" ", "")).most_common(3)
但是从长远来看它显然不会起作用而且用一切来取代它是荒谬的。
答案 0 :(得分:2)
一种方法是不计算任何不是字符的东西 -
common = Counter(m for m in message if m.isalpha()) \
.most_common(3)
上面只会计算字符串中的字母数,如果你想要计算数字,一个简单的方法就是使用str.isalnum()
代替str.isalpha()
。
演示 -
>>> from collections import Counter
>>> message = "Hello, how are you today? "
>>> common = Counter(m for m in message if m.isalpha()) \
... .most_common(3)
>>> common
[('o', 4), ('e', 2), ('y', 2)]
答案 1 :(得分:1)
对于第一个问题,您可以在获取最常见元素之前对字符串使用isalpha()
。只需删除任何非字母字符。
解决第一个问题,我想你的第二个问题也将得到解决。