在python中隔离和过滤.most_common()的结果

时间:2015-10-28 02:41:35

标签: python python-3.x

我正在使用从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)

但是从长远来看它显然不会起作用而且用一切来取代它是荒谬的。

2 个答案:

答案 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()。只需删除任何非字母字符。

解决第一个问题,我想你的第二个问题也将得到解决。