정규 표현 식 을 이용 하여 문자열 을 예제 코드 로 묶 습 니 다.

머리말
최근 작업 중 에 문제 가 발생 했 습 니 다.수 요 는'122333'과 같은 문자열 에 부 딪 혔 습 니 다.연 결 된 부분 을 꺼 내 서[1','22','333','<<<']과 같은 목록 을 얻 는 것 입 니 다.생각 나 는 일반적인 방법 으로 문자열 을 옮 겨 다 니 고 다음 하 나 는 이전 과 하나씩 비교 하 는 것 이 정말 귀 찮 습 니 다!또 다른 두 가지 방법 이 생각 났 습 니 다.더 이상 말 하지 않 겠 습 니 다.상세 한 예제 코드 를 살 펴 보 겠 습 니 다.
1.실제 적 으로 itertools 모듈 의 groupby()방법 으로 처리 할 수 있 습 니 다.

import itertools 
 
Str = '122333<<<<' 
Lst = [] 
for key,group in itertools.groupby(s): 
 Lst.append(list(group)) 
 
print map(lambda x: ''.join(x), Lst) 
위의 처 리 는 비교적 기교 가 있 고 원 하 는 출력 결 과 를 얻 을 수 있다.
['1', '22', '333', '<<<<']
2.하지만 좀 더 멋 있 고 기술적 인 처리 방식 은 정규 표현 식 으로 처리 합 니 다.

import re 
 
Str = '122333<<<<' 
Lst = [] 
 
Pat = re.compile(r'((.)\2*)') 
Rst = [x[0] for x in re.findall(Pat, Str)] 
 
print Rst 
비고:
      1. (.)                # .임의의 문자 일치;(.)그룹 을 나 누 어 뒤의 역방향 인용 을 편리 하 게 하 다.
      2. \2*                # \2.안에 괄호 의 역방향 참조;*대표 님 은 0 개 에서 여러 개 입 니 다.
      3. ((.)\2*)           # 연결 하면 하나 이상 의 문자 로 구 성 된 그룹 입 니 다.
      4. (.)\1*             # 이런 방식 은 유일한 값['1','2','3','<']을 추출 할 수 있다.마찬가지 로 매우 편리 하 다.
총결산
이상 은 이 글 의 전체 내용 입 니 다.본 논문 의 내용 이 여러분 의 학습 이나 업무 에 어느 정도 도움 이 되 기 를 바 랍 니 다.궁금 한 점 이 있 으 시 면 댓 글 을 남 겨 주 셔 서 저희 에 대한 지지 에 감 사 드 립 니 다.

좋은 웹페이지 즐겨찾기