Python 打印字符串中重复2次以上的字母

Python 打印字符串中重复2次以上的字母,python,dictionary,Python,Dictionary,我正在尝试打印字符串中重复超过2次的字母 我已经打印完所有字母的频率,但我不知道如何过滤结果。 代码如下: 重新导入 句子=“新朝蟒蛇!蟒蛇鼠thu vi!Toi rat thich no-P” #删除特殊字符 str=re.sub('\W+','',句子) 频率=[] dict={} 对于集合中的i(str): b=str.count(i,0,len(str)) dict[i]=b 对于排序中的i(dict,key=dict.get,reverse=True): 追加频率((i,dict[i]

我正在尝试打印字符串中重复超过2次的字母

我已经打印完所有字母的频率,但我不知道如何过滤结果。 代码如下:

重新导入
句子=“新朝蟒蛇!蟒蛇鼠thu vi!Toi rat thich no-P”
#删除特殊字符
str=re.sub('\W+','',句子)
频率=[]
dict={}
对于集合中的i(str):
b=str.count(i,0,len(str))
dict[i]=b
对于排序中的i(dict,key=dict.get,reverse=True):
追加频率((i,dict[i]))
打印(频率)
我得到的结果是:

[('h',6),('t',6),('o',5),('i',4),('n',4),('p',3),('a',3),('r',2),('c',2),('y',2),('u',1),('X',1),('v',1),('t',1)]

我只想打印重复超过2次的字母,但我卡住了:(

我想以每行5个字母的格式打印结果

希望你们能帮助我


非常感谢一个很好的方法是使用
collections.Counter
,然后用列表过滤其内容

from collections import Counter

my_string = "Xin chao Python! Python rat thu vi! Toi rat thich no-P"

counter = Counter(my_string)

letters = [(l, count) for l, count in counter.items() if count > 1]

print(letters)
# result: [('i', 4), ('n', 4), (' ', 10), ('c', 2), ('h', 6), ('a', 3), ('o', 5), ('P', 3), ('y', 2), ('t', 6), ('!', 2), ('r', 2)]
您可能会注意到标点和空格也被计算在内。如果您不想这样做,请使用此版本的列表理解来筛选出非
ascii\u字母的字符

from collections import Counter
from string import ascii_letters

my_string = "Xin chao Python! Python rat thu vi! Toi rat thich no-P"

counter = Counter(my_string)

letters = [(l, count) for l, count in counter.items() if count > 1 and l in ascii_letters]

print(letters)
# result: [('i', 4), ('n', 4), ('c', 2), ('h', 6), ('a', 3), ('o', 5), ('P', 3), ('y', 2), ('t', 6), ('r', 2)]
如果您不关心发生的次数,而只关心字母,则使用以下列表:

letters = [l for l, count in counter.items() if count > 1 and l in ascii_letters]

你不需要这个列表。只需遍历字典并检查计数是否大于2

line = ''

for i in dict:
    if dict[i] > 2:
       line+=i

        if len(line) == 5:
            print(line)
            line = ''
if line:
    print(line)

作为Olivier Melançon答案的延伸,为了实现您想要的最终格式:

from collections import Counter
from string import ascii_letters

my_string = "Xin chao Python! Python rat thu vi! Toi rat thich no-P"

counter = Counter(my_string)

#if you want to include whitespace and punctuation as characters
letters = [(l, count) for l, count in counter.items() if count > 1]

#if you want to include only alphabetic characters
letters = [(l, count) for l, count in counter.items() if count > 1 and l in ascii_letters]

c = 0
for letter in letters:
    if c == 4:
        print(letter[0])
        c = 0

    else:
        print(letter[0], end="")
        c += 1

请正确设置您的问题的格式,并在提交之前进行审查,以确保所有内容都正确无误。如果您不确定如何做到这一点,请参考以下@OlivierMelançon。非常抱歉,我已搜索了如何将代码包含在问题中,但我目前不知道如何操作:(非常感谢。非常感谢你。但是在我的情况下,字典是强制性的:(@Luong A Counter是字典的一个子类,它比你的实现效率更高。你为什么想要一个dict?这是一个家庭作业吗?似乎有什么不对劲,但每行都缺少第五个字母:(很抱歉,我的答案中有一个输入错误,我会更新它,它打印得非常平滑,但它缺少所有重复值:(