반응형
오늘은 특정 문자열을 검색해서 잘라내는 방법에 대해서 정리해보고자 한다.
먼저 기본적으로 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():])
반응형
'Python' 카테고리의 다른 글
Python - AWS S3 Select 와 Atena 차이점, 기본 사용법 (0) | 2024.02.22 |
---|---|
VSCode - 파일 저장시 공백 자동 제거 (0) | 2024.02.22 |
Python - 에러 해결: list indices must be integers or slices, not str (0) | 2024.02.20 |
Python - 함수 타입 지정, 타입 힌트(Type Hint)에 대해 (0) | 2024.02.20 |
Python - HTTPX/Requsets Connection reset by peer 문제 해결하기 (0) | 2024.02.20 |