본문 바로가기
Programming/Python

[Python] 정규표현식 텍스트 전처리 (원하는 문자 추출)

by 코딩하는 금융인 2021. 6. 5.

데이터를 다루다보면, 문자열을 기호에 맞게 처리해야 하는 경우가 종종 발생합니다.

파이썬 모듈 중에서 문자열이나 text 처리를 쉽게 할 수 있는 re 모듈을 이용하여 원하는 문자만 추출하는 추출하는 방법을 배워보도록 하겠습니다.

 

레퍼런스에 여러 가지 자료를 잘 정리한 블로그와 웹사이트를 올려놓았으니 궁금하신 분들은 찾아보시기 바랍니다!


한글만 추출하기

  • re 패턴 : [^ㄱ-|가-힣+]  => 한글+띄어쓰기 제외한 글자 패턴
import re
def test(s):
    hangul = re.compile('[^ ㄱ-ㅣ가-힣+]') # 한글과 띄어쓰기를 제외한 모든 글자
    # hangul = re.compile('[^ \u3131-\u3163\uac00-\ud7a3]+')  # 위와 동일
    result = hangul.sub('', s) # 한글과 띄어쓰기를 제외한 모든 부분을 제거
    retunr(result)
    
s='韓子는 싫고, 한글은 nice하다. English 쵝오 -_-ㅋㅑㅋㅑ ./?!'

#<-------결과창------->#
# 문자열 출력
test(s)
'는 싫고 한글은 하다  쵝오 ㅋㅑㅋㅑ '
# 리스트 출력
list(test(s))
['는', ' ', '싫', '고', ' ', '한', '글', '은', ' ', '하', '다', ' ', ' ', '쵝', '오', ' ', 'ㅋ', 'ㅑ', 'ㅋ', 'ㅑ', ' ']

 

숫자 다루기 (숫자만 추출, 숫자 제거)

  • re 패턴 : '\d+'
## 숫자 다루기
import re
text = '비트코인, 이게 머선129'
num = re.compile(r'\d+')

# 숫자 제거
result01 = num.sub('',text)
print(result01)
# 결과
비트코인, 이게 머선

# 숫자만 추출
result02 = num.findall(text)
print(result02)
# 결과
['129']

 

특수문자 다루기

  • re 패턴 : [^ A-Za-z0-9-+]
## 특수문자 다루기
import re
text = ':)bitcoin is real?  >.<,'
special = re.compile(r'[^ A-Za-z0-9가-힣+]')

# 특수문자만 제거
result = special.sub('',text)
print(result)
# 결과
bitcoin is real  

# 특수문자만 찾기
result = special.findall(text)
print(''.join(result))
# 결과
:)?>.<,

 

References

 

 

반응형

댓글