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