본문 바로가기
Python

Python 원하는 텍스트만 추출하는 방법의 기초

by Davidev 2022. 7. 29.
반응형

 

 


 

안녕하세요.

 

오늘은 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#']

 

 

<정규표현식의 확장>

 

원하는 여러 값을 튜플에 담아 그룹으로 추출하기

텍스트를 변경해서 출력하기,

부분만 반환하기 등

 

 


 

소통은 언제든 환영해요!

방문해주셔서 감사합니다.

오늘도 굿데이 :)

 


 

반응형

댓글