안녕하세요.
오늘은 Python의 원하는 텍스트만 추출해주는 기능에 대해 공유해보려고 합니다.
이 기능은, Regular Expression(정규표현식)이라 불리는 문법입니다.
정규표현식을 쓰려면 모듈을 불러와야 합니다.
(표준 라이브러리 모듈 내 있으므로 따로 설치하지 않아도 됩니다.)
import re
*re : Regular Expression
<순서>
1. 문자열을 추출하고 싶은 원본 데이터를 객체에 담기.
2. 정규표현식 정의하기. (re 모듈의 compile()함수를 이용해 패턴 객체 정의)
3. 정규표현식과 일치하는 부분을 찾아 객체에 담기
4. 출력하기
<코드 예제>
import re
origin_data = '가나다 ABC !@# 012 345 67 8'
re_pattern = re.compile(r'\d\d\d')
results = re.findall(re_pattern, origin_data)
print(results)
<코드 실행 결과>
['012', '345']
<문자열 형식>
'\d' : 숫자(0~9 정수 1개)
'\D' : \d가 아닌 모든 것 (= \d의 여집합)
'\w' : 알파벳, 한글, 숫자 등 1개 (자음, 모음, '_' 도 포함)
'\W' : \w가 아닌 모든 것
'\s' : 공백문자 1개(' ', '\n', '\t', '\r', '\f', '\v')
'\S' : \s가 아닌 모든 것
'.' : '\n' 줄바꿈을 제외한 모든 문자 1개
<문자열이 반복되는 경우>
{m} : m번 반복됨
{m,n} : m번 이상, n번 이하
{,n}와 {m,}처럼 공백인 경우도 존재.
+ : 1번 이상
? : 없거나 1개
* : 없거나 많음
<코드 예제>
import re
text = '#1##23##456#'
pattern0 = re.compile(r'#\w{2}#')
pattern1 = re.compile(r'#\w{2,3}#')
pattern2 = re.compile(r'#\w?#')
pattern3 = re.compile(r'#\w+#')
print(re.findall(pattern0, text))
print(re.findall(pattern1, text))
print(re.findall(pattern2, text))
print(re.findall(pattern3, text))
<코드 실행 결과>
['#23#']
['#23#', '#456#']
['#1#', '##']
['#1#', '#23#', '#456#']
<정규표현식의 확장>
원하는 여러 값을 튜플에 담아 그룹으로 추출하기
텍스트를 변경해서 출력하기,
부분만 반환하기 등
소통은 언제든 환영해요!
방문해주셔서 감사합니다.
오늘도 굿데이 :)
'Python' 카테고리의 다른 글
파이썬 키워드 조회, keyword! (0) | 2022.07.29 |
---|---|
파이썬 식별자 구분 방법 (클래스, 함수, 변수 구분법) (0) | 2022.07.29 |
파이썬 오류, 에러 메시지의 종류와 뜻 (0) | 2022.07.29 |
파이썬 기초, 로또 번호 코딩하기 (연산, 수식, 숫자처리함수, 랜덤함수) (0) | 2022.07.29 |
파이썬 기초, 문자열(인덱싱, 슬라이싱, 문자포맷, 줄바꿈 등) (0) | 2022.07.29 |
댓글