2017-10-01 23 views
1

が、私はそれが2回発生した場合だけで1つの文字を印刷したい、私はitertoolsを使用してみましたが、文字が4回を書かれている場合、それは1つだけ印刷し、私は2 例を印刷する必要があります。文字列に重複している1文字を印刷するにはどうすればよいですか?文字列で

input = rruunnnniinngg 
output = running 

ありがとうbtw。

import re 

s = 'rruunnnniinngg' 
result = re.sub(r'(\S)\1', '\\1', s) 

print(result) 

出力:re.sub()関数(のみ隣接文字を想定)で

+0

文字が3回発生するとどうなりますか? – RomanPerekhrest

+0

繰り返し文字が隣接していない場合はどうなりますか? – kdopen

+0

RomanPerekhrestとkdopenそれ以前は文字を2回だけ出力するコードがあるので、 –

答えて

3

running 

  • (\S) - 単一の非空白文字を含む正規表現捕捉基

  • \1 - 第一キャプチャグループの値(直前の文字が繰り返さ)

+0

私の問題を解決してくれてありがとう!!あり、anyelseがこの質問を読んだ場合、文字は2回しか繰り返されません。 –

+0

@DiegoVásquez、よろしくお願いします – RomanPerekhrest

0

あなたはこれを試すことができます。

from itertools import groupby 
input1 = "rruunnnniinngg" 
final_string = ''.join(map(lambda x: x[:(len(x)/2)], [''.join(list(b)) for a, b in groupby(input1)])) 

出力:

'running' 
0

それは単にすることができwhileループを使用して実装されます。
- 出力文字列の現在の文字を追加します。
- 次の文字が現在の文字と同じかどうかを確認します。
-ifの場合、余分な1単位でカウンタを増加して次の文字をスキップします。

def func(s): 
    i=0 
    p='' 
    while(i<len(s)-1): 
     p+=s[i] 
     if(s[i+1]==s[i]): 
      i+=1 
     i+=1 
    return p 
関連する問題