2017-05-24 12 views
-1

Hiiiiiiiiiiiiのような文字列があり、charのチェーンが入っている可能性があります。ここでは複数回繰り返されますiiのこのチェーンを1つのiに置き換えて、を出力として取得してください。また、与えられた単語のeeeeeeemadeeefghdddという別の例では、emadefghdを出力したいと思います。これはどのように行うことができますか?Pythonの文字列でcharの反復チェーンを削除する方法

答えて

3

かなり単純な正規表現を使用して、文字のすべての繰り返しを文字自体に置き換えることができます。

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

あなたがenumerate()stringをループ使用することができ、ここで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' 
+0

@TimPietzckerああ、このソリューションでは、シーケンスが与えられた文字に対して1回だけ出現することができると仮定しています。 – timgeb

+0

@TimPietzckerは指摘してくれてありがとうございます、それについてはどうしたらいいですか? –

+0

Meh。間違っているわけではありませんが、それほどエレガントではありません。正規表現は、この仕事のための正しいツールです。 –

2

使用し、例えば、その前に1に対して各文字を確認することができます。

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 
関連する問題