본문 바로가기
Python

Python - 특정 문자열 검색하여 잘라내기, finditer

by 올엠 2024. 2. 21.
반응형

오늘은 특정 문자열을 검색해서 잘라내는 방법에 대해서 정리해보고자 한다.

먼저 기본적으로 Python에서 문자열의 인덱스를 이해할 필요가 있다. 인덱스(문자의 위치)는 [:]를 이용해서 앞뒤를 지정할 수 있다.

아래 예제와 같이 str_test[0:1]은 0(처음)부터 1번까지 내용만 리턴하라는 의미가 된다.

그리고 파이썬은 처음과 끝을 생략할 수 있는데, [:1] 은 처음부터 1까지 [1:] 1부터 마지막까지로 유용하게 사용이 가능하다.

그럼 검색은 어떻게 할 수 있을까? 바로 regex를 이용해서 진행해야 한다. regex는 find와 finditer이 있는데 이 둘의 차이점은 finditer은 매칭되는 값의 위치(인덱스)을 함께 리턴해주게 된다는 점이 크다.

import re


str_test = '012345'

matchs = re.finditer('1', str_test)


for mat in matchs:
    print(mat.group(), mat.start(), mat.end(), mat.span())

finditer은 리스트로 결과를 만들어주는데, 그 안에는 group(), start(), end(), span() 이렇게 4개의 값을 가지고 있다.

group(): 찾은 값이 저장됨

start(): 시작 인덱스 값

end(): 끝 인덱스 값

span(): 시작과 끝 값

위 값을 이용해서 만약 특정 값을 잘라내거나 만들어야 하는경우 다음과 같이 이용이 가능하다.

import re


str_test = '012345'

matchs = re.finditer('1', str_test)


for mat in matchs:
    print(mat.group(), mat.start(), mat.end(), mat.span())
    # 찾은 값 기준으로 리스트 생성
    print(str_test.split(mat.group()))
    # 찾은 값 기준으로 문자열 생성
    print(str_test[mat.start():mat.end()])
    # 찾은 값 제거하기
    print(str_test[:mat.start()] + str_test[mat.end():])

반응형