파이썬 문자열을 처리할 때, 정규표현식을 알면 막강하다. 문자열 함수로 인덱스 찾기나 바꾸기 등은 가능하지만, 여러가지 복잡한 조건으로 처리하기에는 코드도 복잡해지고 난해할 때가 있다. 이럴 때 정규표현식을 알면 매우 유용하다.
오늘은 파이썬에서 정규표현식을 사용할 수 있도록 도와주는 패키지 - pygrok과 re의 사용법에 대해서 알아보도록 하겠다.

 

파이썬 정규표현식 - re, pygrok

 


정규표현식을 작성하는 방법에 대해서는 해당 포스팅 하단의 링크를 참조하기 바란다. 여기서는 pygrok과 re의 사용법에 대해서 말하고자 한다.

 

1. pygrok

파이썬에 정규표현식을 사용하기 위해 알아볼 패키지는 re와 pygrok이다. re는 파이선에 기본 내장된 모듈이다. 문자열을 찾고 쉽게 변경할 수 있다. 만약 특정 문자열을 찾는 것이 목적이라면, pygrok을 사용하는 것이 더 쉽고 편리하다. 아래와 같이 match함수를 이용하면 쉽게 찾고자 하는 문자를 찾을 수 있다.

다만, WORD가 띄워쓰기를 기반으로 인식하기 때문에 한국어보다는 영어에 적합한 듯 하다.

 

from pygrok import Grok
text = '철수 는 18 살이고, 밥 을 먹었다.'
pattern = '%{WORD:name} 는 %{NUMBER:age} 살이고, %{WORD:what} 을 먹었다.'
grok = Grok(pattern)
print(grok.match(text))

{'name': '철수', 'age': '18', 'what': '밥'}


WORD, NUBMER, BASE10NUM, IP, HOSTNAME, URIPATH, DATE같은 문자열의 패턴이 이미 내장되어 있어 원하는 문자열을 쉽게 찾을 수 있다.

pygrok의 대한 자세한 내용은 아래 링크를 참조하기 바란다.
( 참조: pygrok github 페이지 바로가기 )

 

텍스트

 

2. re

re를 이용하면 원하는 문자열을 찾고 변경하는 것이 가능하다.

 

1) 문자열 찾기

re는 compile함수를 이용해서, 정규표현식을 컴파일 해야 한다. 이후에 match, search, findall, finditer함수로 원하는 문자열을 찾을 수 있다.

 

- match, 처음부터 찾기
- search, 전체 문자열 찾기
- findall, 모든 문자열 찾아서 리스트로 반환
- finditer, 모든 문자열을 반복 가능한 객체로 반환

 

re를 이용하여 원하는 문자열을 검색하는 코드는 아래와 같다.

 

import re

text = '철수 는 18 살이고, 밥 을 먹었다.'
pattern = '\w+\s는'
p = re.compile(pattern)
m = p.match(text)
print(m)
 
print(re.compile(pattern).match(text))

 

 

match함수를 이용하고 나서 group, start, end, span을 이용하면 아래와 같은 처리도 가능하다.

 

- group: matching된 문자열 반환
- start: 시작위치 반환 
- end: 끝 위치 반환
- span: 시작위치, 끝위치 튜플로 반환


compile할 때는 DOTALL, IGNORECASE, MULTILINE, VERBOSE 옵션을 사용할 수 있다. 이 중 가장 많이 사용하는 것은 IGNORECASE이다. 대소문자 상관없이 매칭할 수 있게 해준다.

 

2) 문자열 변경하기

문자열을 변경하고 싶다면 sub함수를 이용한다.

 

import re

text = '철수는 18 살이고, 밥 을 먹었다.'
pattern = '\w+는'

re.sub(pattern, '영희는' , text)



오늘은 파이썬 정규표현식 이용하기-re와 pygrok에 대해서 알아보았다. 다음 포스팅에서 실제 정규표현식을 작성하는 방법에 대해서 알아보도록 하겠다.

반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기

댓글을 달아 주세요

">