본문 바로가기
Python/Data Engineering

정규식을 이용한 데이터 전처리(문자만 남기기)

by JONGSKY 2023. 1. 14.
728x90
SMALL

1.  글을 작성하게 된 계기

텍스트 데이터를 전처리 하다 보면

흔하게 문자만 남기거나 특정 문자를 삭제하는 등과 같은

데이터 전처리 작업이 필요한 경우들이 많다.

 

그래서 정규식을 이용해 데이터를 전처리 하는 방법에 대해서

정리하고자 글을 작성하게 되었다.

 

2. 정규식을 이용한 데이터 전처리

 

- 단일 변수일 경우(문자 외에 모두 제거)

import re

string = "abcdefㄱㄴㄷㄹㅁㅂ가나다라마바사12345[]{}().,!?'`~;:"
re.sub('[^A-Za-z0-9가-힣]', '', string) #영어대문자,소문자,숫자,한글만 남기기

# Out[1]: 'abcdef가나다라마바사12345'
import re

def preprocessing_text():
    s='韓子는 어렵고, 한글은 nice하다. English는 .. ~.~ ㅋㅋ 내맘대로 쓰기 ./?!'
    hangul = re.compile('[^ ㄱ-ㅣ가-힣]+') # 한글과 띄어쓰기를 제외한 모든 글자
  # hangul = re.compile('[^ \u3131-\u3163\uac00-\ud7a3]+')  # 위와 동일
    result = hangul.sub('', s) # 한글과 띄어쓰기를 제외한 모든 부분을 제거
    print (result)
    result = hangul.findall(s) # 정규식에 일치되는 부분을 리스트 형태로 저장
    print(result)

preprocessing_text()

# 는 어렵고 한글은 하다 는   ㅋㅋ 내맘대로 쓰기 
# ['韓子', ',', 'nice', '.', 'English', '..', '~.~', './?!']

한글 코드 범위

ㄱ ~ ㅎ: 0x3131 ~ 0x314e

ㅏ ~ ㅣ: 0x314 f ~ 0x3163

가 ~ 힣: 0 xac00~ 0xd7a3

 

 

- 단일 변수일 경우(숫자만 제거하는 경우)

import re
input_str = "Box A contains 3 red and 5 white balls, while Box B contains 4 red and 2 blue balls."
result = re.sub(r'\d+', '', input_str)
print(result)

# Box A contains  red and  white balls, while Box B contains  red and  blue balls

 

- 단일 변수일 경우(punctuation 만 제거하는 경우)

import string
input_str = "This &is [an] example? {of} string. with.? punctuation!!!!" # Sample string
translator = str.maketrans('', '', string.punctuation)
result = input_str.translate(translator)
print(result)

# This is an example of string with punctuation

 

- DataFrame에서 변경하는 경우

df['title'] = [re.sub('[^A-Za-z0-9가-힣]', '', title_name) for title_name in df['title']]

 

 

 

728x90
LIST