2017-10-01 1 views
1

, 나는 내가 itertools를 사용하여 시도,이 2 번 발생하는 경우 단지 하나 개의 문자를 인쇄 할하지만 편지는 단지 하나의 인쇄 4 번 작성, 나는 2 예 인쇄해야하는 경우 :문자열에 중복 된 문자 하나를 인쇄하려면 어떻게해야합니까? 문자열에서

input = rruunnnniinngg 
output = running 

감사합니다. btw. re.sub() 기능으로

+0

문자가 3 번 발생할 경우 어떻게됩니까? – RomanPerekhrest

+0

반복되는 문자가 인접하지 않으면 어떻게됩니까? – kdopen

+0

RomanPerekhrest 및 kdopen 전에는 문자가 2 번 인쇄되는 코드가 있기 때문에 발생하지 않습니다 –

답변

3

은 (단지 인접 문자를 가정)

import re 

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

print(result) 

출력 :

running 

  • (\S) - 단일 비 공백 문자

    함유 정규식 포착 기
  • \1 - 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 루프를 사용하여 구현 :
- 출력 문자열의 현재 문자를 추가합니다.
- 날씨가 다음 문자가 현재 문자와 같은지 확인합니다.
- 예이면 여분의 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