Python/Utils

파이썬 한글 또는 영문만 추출하기 / 제거하기

jimmy_AI 2022. 9. 26. 01:05
반응형

Python에서 정규표현식을 활용하여 한글 혹은 영어만 남기거나

제거하는 코드를 간략하게 정리해 보겠습니다.

 

 

한글만 추출, 제거

re.sub 함수 내 정규표현식에서 자모는 ㄱ-ㅣ, 온전한 글자는 가-힣으로 커버하며,

아래와 같이 ^ 유무의 차이로 한글만 남기기 혹은 한글만 제거를 모두 수행할 수 있습니다.

또한, 공백의 포함/제거 여부도 \s 포함 여부로 같이 조정할 수 있습니다.

import re

my_str = "안녕하세요 ㅎㅎ. Hello World! 12345?"

kor_str = re.sub(r"[^ㄱ-ㅣ가-힣\s]", "", my_str) # 한글 + 공백만 남기기
not_kor_str = re.sub(r"[ㄱ-ㅣ가-힣]", "", my_str) # 한글만 제거하기
not_zamo_str = re.sub(r"[^가-힣]", "", my_str) # 자모가 아닌 한글만 남기기(공백 제거)

print(kor_str) # 안녕하세요 ㅎㅎ   
print(not_kor_str) #  . hello world! 12345?
print(not_zamo_str) # 안녕하세요

 

 

영문만 추출, 제거

영문은 소문자는 a-z, 대문자는 A-Z로 커버할 수 있습니다.

같은 원리로 ^ 유무로 영어만 남기기 혹은 제거 여부를 구분해주실 수 있습니다.

import re

my_str = "안녕하세요 ㅎㅎ. Hello World! 12345?"

eng_str = re.sub(r"[^a-zA-Z\s]", "", my_str) # 영문자 + 공백만 남기기
not_eng_str = re.sub(r"[a-zA-Z]", "", my_str) # 영문자만 제거하기
lower_eng_str = re.sub(r"[^a-z]", "", my_str) # 소문자만 남기기

print(eng_str) #   Hello World 
print(not_eng_str) # 안녕하세요 ㅎㅎ.  ! 12345?
print(lower_eng_str) # elloorld