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
'Python > Data Engineering' 카테고리의 다른 글
한국어 문장 분리기 (kss - korean sentence splitter) 사용방법 (0) | 2023.02.10 |
---|---|
문자열 중간 다중 공백 제거하는 방법 (0) | 2023.01.28 |
py-hanspell을 이용한 네이버 맞춤법 검사기 (2) | 2023.01.24 |
KoNLPy를 활용한 한국어 형태소 분석기 비교 (0) | 2023.01.24 |
Mecab 설치 에러 해결 : Exception: Install MeCab in order to use it: http://konlpy.org/en/latest/install/ (0) | 2023.01.22 |