데이터분석가 과정/Python

DAY37. Python 문자열 전처리, 세미프로젝트 발표

LEE_BOMB 2021. 11. 5. 17:28
텍스트 전처리

특수문자, 문장부호, 불용어 처리 

texts = ['AFAB54747,asabag?', 'abTTa $$;a12:2424.', 'uysfsfA,  A124&***$?']
print(texts)
# ['AFAB54747,asabag?', 'abTTa $$;a12:2424.', 'uysfsfA,  A124&***$?']
len(texts) # 3

texts[0] # 'AFAB54747,asabag?'

 

list + for 이용 

texts_re = [] # 결과 저장 

for st in texts :
    re = st.lower() # 소문자 변경 
    texts_re.append(re)

print(texts_re)

 

단계1 : 소문자 변경 
list 내포 이용 : 변수 = [실행문  for 변수 in 열거형객체 ]  

texts_re = [st.lower()  for st in texts]
print(texts_re)

['afab54747,asabag?', 'abtta $$;a12:2424.', 'uysfsfa,  a124&***$?']


단계2 : 숫자 제거 : re.sub('pattern', 'rep', string)

import re # re 모듈 가져오기 

texts_re2 = [re.sub('[0-9]', '', st)  for st in texts_re]
print(texts_re2)

['afab,asabag?', 'abtta $$;a:.', 'uysfsfa,  a&***$?']


단계3 : 문장부호 제거 

punc_str = '[,.?!:;]'
texts_re3 = [re.sub(punc_str, '', st)  for st in texts_re2]
print(texts_re3)

['afabasabag', 'abtta $$a', 'uysfsfa  a&***$']


단계4 : 특수문자 제거 

spec_str = '[@#$%^&*()]'
texts_re4 = [re.sub(spec_str, '', st)  for st in texts_re3]
print(texts_re4)

['afabasabag', 'abtta a', 'uysfsfa  a']

단계5 : 공백(white space) 제거 
2칸 이상 공백 -> 1칸 공백 변환 
ex) 'uysfsfa  a' -> 'uysfsfa', 'a' -> 'uysfsfa a'

texts_re5 = [' '.join(st.split()) for st in texts_re4]
print(texts_re5)

['afabasabag', 'abtta a', 'uysfsfa a']