Python 是否删除连续出现两次的字母?

Python 是否删除连续出现两次的字母?,python,string,Python,String,因此,我生成了一个随机名称,但有时一些名称看起来有点像这样: “bbob”因此我想删除字符串中的字母,使其如下所示: “鲍勃”。现在我知道如何删除字符串中某个字母的所有重复项,但我只想删除连续出现两次的字母。但当然要留一个。以下是我迄今为止所做的工作 def Gen(): letters = string.ascii_lowercase[:-3].replace('q','') print(letters) passed = False while passed

因此,我生成了一个随机名称,但有时一些名称看起来有点像这样: “bbob”因此我想删除字符串中的字母,使其如下所示: “鲍勃”。现在我知道如何删除字符串中某个字母的所有重复项,但我只想删除连续出现两次的字母。但当然要留一个。以下是我迄今为止所做的工作

def Gen():
    letters = string.ascii_lowercase[:-3].replace('q','')
    print(letters)
    passed = False
    while passed == False:
        vowels = 4
        consanants = 2
        consanantCount = 0
        vowelCount = 0
        name = ''.join(random.choice(letters) for i in range(vowels+consanants))
        for letter in name:
            if letter in 'aeiou':
                vowelCount +=1
            else:
                consanantCount +=1
        if vowelCount == vowels and consanantCount == consanants:
            passed = True
        else:
            passed = False
    return name
print(Gen())

任何帮助都将不胜感激。谢谢大家!

哦,我明白你想做什么了。所以我要做的就是试试这样的东西。它将消除重复的字母,但只有当它们排成一行时:

输入:

reps = 1   # number of consecutive repeated chars allowed
name = 'ttomt'
name = ''.join(['' if i>reps-1 and e==name[i-reps] else e for i,e in enumerate(name)])
输出:
tomt


希望这是有帮助的

哦,我明白你想做什么了。所以我要做的就是试试这样的东西。它将消除重复的字母,但只有当它们排成一行时:

输入:

reps = 1   # number of consecutive repeated chars allowed
name = 'ttomt'
name = ''.join(['' if i>reps-1 and e==name[i-reps] else e for i,e in enumerate(name)])
输出:
tomt


希望这是有帮助的

这也可以通过正则表达式和对捕获组的引用来实现:/()\1+/$1/(适应Python用法…)这也可以通过正则表达式和对捕获组的引用来实现:/()\1+/$1/(适应Python用法…)您通过添加reps变量扩展了问题的范围,该变量是字符的“最大重复次数”。我认为在这种情况下,应该在代码中添加注释。对不起,您的最后一行是什么意思?简单的答案不需要reps变量。自从你添加了它之后,我想在它后面添加一条评论,比如
reps=1#允许的连续重复字符数
。哦,我明白你的意思了:我肯定我可以编辑我的帖子。你添加了reps变量,这是一个字符的“最大重复次数”,从而扩大了问题的范围。我认为在这种情况下,应该在代码中添加注释。对不起,您的最后一行是什么意思?简单的答案不需要reps变量。既然你添加了它,我想在它后面加一条评论,比如
reps=1#允许的连续重复字符数
。哦,我明白你的意思了:我肯定我可以编辑我的帖子。