【发布时间】:2017-08-31 21:27:50
【问题描述】:
我有一个像Hiiiiiiiiiiii 这样的字符串,它可能包含一个字符链,这里是i,它重复了不止一次。我想用一个替换这个is 链i 并获得Hi 作为输出。另一个例子是给定单词eeeeeeemadeeefghddd 我想获得emadefghd 作为输出。我怎样才能在python 中做到这一点?
【问题讨论】:
我有一个像Hiiiiiiiiiiii 这样的字符串,它可能包含一个字符链,这里是i,它重复了不止一次。我想用一个替换这个is 链i 并获得Hi 作为输出。另一个例子是给定单词eeeeeeemadeeefghddd 我想获得emadefghd 作为输出。我怎样才能在python 中做到这一点?
【问题讨论】:
你可以在这里使用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'
【讨论】:
您可以使用相当简单的正则表达式将每个重复的字符替换为字符本身。
>>> import re
>>> re.sub(r'(.)\1+', r'\1', 'Hiiiiiiiiiiii')
'Hi'
>>> re.sub(r'(.)\1+', r'\1', 'eeeeeeemadeeefghddd')
'emadefghd'
【讨论】:
您可以使用enumerate() 循环遍历string 并检查每个字符与之前的字符,例如:
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
【讨论】: