2016-09-13 102 views
0

當我有一個特定的字符在一個序列中重複多次時,我想合併它,所以不會有相同的相鄰字符。Python - 合併字符串中的重複字符(ins序列)?

例如:

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

您可以使用itertools.groupby

s = ''.join(ch for ch, _ in itertools.groupby('aa.bc.a.d.aaa.z')) 
+0

這個有趣的 – Andrius

0

嘗試:

>>> re.sub(r'(\D)\1+', r'\1', s) 
'a.bc.a.d.a.z' 
+1

爲什麼只有非數字('\ D')?看起來OP需要匹配任何角色。 –

+0

這是一個微不足道的替代 –

0

如何:

string = 'aa.bc.a.d.aaa.z' 
res = "" 
for c in string: 
    if not res.endswith(c): 
    res += c