[PYTHON] 파이썬 - 문자열에서 연속 된 경우에만 중복을 제거하는 방법?
PYTHON파이썬 - 문자열에서 연속 된 경우에만 중복을 제거하는 방법?
'12233322155552'와 같은 문자열의 경우 중복을 제거하여 '1235'를 얻을 수 있습니다.
하지만 내가 계속 지키고 자하는 것은 '1232152'이며, 단지 연속적인 복제물 만 지우는 것입니다.
해결법
-
==============================
1.Microsoft / Amazon의 면접 질문 유형 : 이것은 의사 코드이며, 실제 코드는 연습 문제로 남아 있습니다.
Microsoft / Amazon의 면접 질문 유형 : 이것은 의사 코드이며, 실제 코드는 연습 문제로 남아 있습니다.
for each char in the string do: if the current char is equal to the next char: delete next char else continue return string
보다 높은 수준으로 시도해보십시오 (실제로 구현되지 않음).
for s in string: if s == s+1: ## check until the end of the string delete s+1
-
==============================
2.
import re answer = re.sub(r'(\d)\1+', r'\1', '12233322155552')
-
==============================
3.힌트 : itertools 모듈은 매우 유용합니다. 특히 itertools.groupby의 한 기능은 다음과 같이 매우 유용 할 수 있습니다.
힌트 : itertools 모듈은 매우 유용합니다. 특히 itertools.groupby의 한 기능은 다음과 같이 매우 유용 할 수 있습니다.
문자열은 반복 가능하므로 수행 할 수있는 작업은 다음과 같습니다.
use groupby to collect neighbouring elements extract the keys from the iterator returned by groupby join the keys together
모두 하나의 깨끗한 라인에서 할 수 있습니다.
-
==============================
4.itertools를 사용할 수 있습니다. 여기에 하나의 라이너가 있습니다.
itertools를 사용할 수 있습니다. 여기에 하나의 라이너가 있습니다.
>>> s = '12233322155552' >>> ''.join(i for i, _ in itertools.groupby(s)) '1232152'
-
==============================
5.우선, 파이썬 (Google "Python immutable string"이 명확하지 않은 경우)에서 문자열을 제거 할 수 없습니다.
우선, 파이썬 (Google "Python immutable string"이 명확하지 않은 경우)에서 문자열을 제거 할 수 없습니다.
M의 첫 번째 접근 방식은 다음과 같습니다.
foo = '12233322155552' bar = '' for chr in foo: if bar == '' or chr != bar[len(bar)-1]: bar += chr
또는 위의 itertools 힌트를 사용하십시오.
''.join([ k[0] for k in groupby(a) ])
-
==============================
6.groupby +1. 수갑을 벗어, 뭔가 :
groupby +1. 수갑을 벗어, 뭔가 :
from itertools import groupby def remove_dupes(arg): # create generator of distinct characters, ignore grouper objects unique = (i[0] for i in groupby(arg)) return ''.join(unique)
파이썬 2.7.2에서 저를위한 요리
-
==============================
7.
number = '12233322155552' temp_list = [] for item in number: if len(temp_list) == 0: temp_list.append(item) elif len(temp_list) > 0: if temp_list[-1] != item: temp_list.append(item) print(''.join(temp_list))
-
==============================
8.이것은 방법 일 것입니다 :
이것은 방법 일 것입니다 :
def fix(a): list = [] for element in a: # fill the list if the list is empty if len(list) == 0:list.append(element) # check with the last element of the list if list[-1] != element: list.append(element) print(''.join(list)) a= 'GGGGiiiiniiiGinnaaaaaProtijayi' fix(a) # output => GiniGinaProtijayi
-
==============================
9.
t = '12233322155552' for i in t: dup = i+i t = re.sub(dup, i, t)
최종 결과는 1232152로 얻을 수 있습니다.
from https://stackoverflow.com/questions/11460855/python-how-to-remove-duplicates-only-if-consecutive-in-a-string by cc-by-sa and MIT license
'PYTHON' 카테고리의 다른 글
[PYTHON] numpy.linalg.solve ()가 numpy.linalg.inv ()보다 더 정확한 행렬 반전을 제공하는 이유는 무엇입니까? (0) | 2018.11.23 |
---|---|
[PYTHON] 파이썬 사전에 새 항목 추가 [duplicate] (0) | 2018.11.23 |
[PYTHON] 판다는 문자열에서 숫자를 추출합니다. (0) | 2018.11.23 |
[PYTHON] Django : 사후 저장 신호를 사용하여 저장 대 커스터마이즈 할 때 (0) | 2018.11.22 |
[PYTHON] csv의 컬럼에 파이썬리스트 작성하기 (0) | 2018.11.22 |