当我在序列中重复多次的特定字符时,我想合并它,因此不会有相同的相邻字符。
例如:
s = 'aa.bc.a.d.aaa.z'
# after merging repeating "a" character in a sequence:
输出:a.bc.a.d.a.z
P.S。我能够找到这种匹配的开始和结束索引(使用正则表达式),但仍然看不到像我需要那样合并那些的正常方式。
只是为了澄清我是如何找到它的:
import re
f = re.finditer('(a){2,}', s)
for match in f:
match.span()
(0, 2)
(10, 13)
答案 0 :(得分:1)
尝试:
>>> re.sub(r'(\D)\1+', r'\1', s)
'a.bc.a.d.a.z'
答案 1 :(得分:0)
这个怎么样:
string = 'aa.bc.a.d.aaa.z'
res = ""
for c in string:
if not res.endswith(c):
res += c
答案 2 :(得分:0)
您可以使用itertools.groupby
:
s = ''.join(ch for ch, _ in itertools.groupby('aa.bc.a.d.aaa.z'))