如何在python中删除字符串中的char的重复链

时间:2017-05-24 10:52:55

标签: python regex

我有一个像Hiiiiiiiiiiii这样的字符串,它可能包含一个字符串链接,在这里i它重复了一次以上。我想要替换这个{{1}链。 1}} s有一个i并获取i作为输出。对于另一个带有给定单词Hi的示例我希望得到eeeeeeemadeeefghddd作为输出。如何我可以在python中做到这一点吗?

3 个答案:

答案 0 :(得分:4)

您可以在此使用itertools

>>> import itertools
>>> s = "Hiiiiiiiiiiii"
>>> ''.join(i for i, _ in itertools.groupby(s))
'Hi'

>>> s = 'eeeeeeemadeeefghddd'
>>> ''.join(i for i, _ in itertools.groupby(s))
'emadefghd'

答案 1 :(得分:3)

您可以使用相当简单的正则表达式替换字符本身的每个重复字符。

>>> import re
>>> re.sub(r'(.)\1+', r'\1', 'Hiiiiiiiiiiii')
'Hi'
>>> re.sub(r'(.)\1+', r'\1', 'eeeeeeemadeeefghddd')
'emadefghd'

答案 2 :(得分:2)

您可以使用string遍历enumerate()并检查每个字符与之前的字符,例如:

s = 'eeeeeeemadeeefghddd'
result = ''
for i, c in enumerate(s):
    if i == 0:
        result += c
    else:
        if c != s[i-1]:
            result += c
print result

输出:

emadefghd