파이썬으로 데이터에서 특정 문자열로 감싸진 문자열을 추출하고 싶을때,
정규식 표현을 사용하면 쉽게 추출할 수 있습니다.
re.findall(pattern, text)
- pattern : 문자열의 pattern
- text : 찾을 대상 텍스트
< 사용된 정규식 표현 일부 >
[^문자] 괄호안의 문자를 제외한 것
* 반복패턴: 없거나 or 있거나 (여러개) /abc*/
+ 반복패턴: 최소 한개 or 여러개 /abc+/
(?=) 앞쪽 일치(Lookahead), /ab(?=c)/
(?<=) 뒤쪽 일치(Lookbehind), /(?<=ab)c/
# 작은 따옴표 안의 문자
re.findall("'([^']*)'", str)
# 큰 따옴표 안의 문자
re.findall('"([^"]*)"', str)
# () 문자열 찾기
re.findall('\(([^)]+)', str)
# [] 문자열 찾기
re.findall('\[([^]]+)', str)
전체 코드는 아래와 같습니다.
# -*- coding: utf-8 -*-
import re
if __name__ == "__main__":
des_str="""'문자열', (찾기), "예제", [클라이언트: 192.168.0.100]"""
# 작은 따옴표 안의 문자
str_splits = re.findall("'([^']*)'", des_str)
print(str_splits)
# 큰 따옴표 안의 문자
str_splits = re.findall('"([^"]*)"', des_str)
print(str_splits)
# () 문자열 찾기
str_splits = re.findall('\(([^)]+)', des_str)
print(str_splits)
# [] 문자열 찾기
#str_splits = re.findall('\[([^]]+)', des_str)
str_splits = re.findall('(?<=\[\클라이언트: )(.*?)(?=\])', des_str)
#(?<=\[\클라이언트: ) : [클라이언트: 를 기준으로 그 뒤 문자열 탐색
#(.*?) : 최소 패턴 일치, 뒤에 오는 문자열을 만날 때까지 포함
#(?=\]) : ] 기준으로 그 앞 문자열 탐색
print(str_splits)
실행 결과 화면은 아래와 같이 작은따옴표, 큰 따옴표, (), [] 문자열을 차례대로 찾아 프린트한 화면이 출력됩니다.
'공학속으로 > python' 카테고리의 다른 글
[Python] ChatGPT API 사용하기 (0) | 2023.07.06 |
---|---|
[Python] csv, text 파일 mysql 업로드 방법 (0) | 2023.04.27 |
[python] 판다스 데이터프레임 저장하기 (0) | 2022.12.07 |
[python] IP 후이즈(whois) 조회하기 (0) | 2022.11.11 |
[python] 크롬 브라우저에 저장된 패스워드 복호화 방법 (0) | 2022.10.27 |
댓글