[Python] 문자열에서 한글만 가져오기/제거하기
October 17, 2023
문자열에서 한글만 가져오거나, 한글이 아닌 다른 문자들만 가져오는 방법에 대해서 알아보겠습니다.
한글, 영어, 숫자 등의 문자가 섞여있고 한글만 필요할 때 또는 한글만 제거해야하는 경우, 정규표현식으로 한글을 찾아서 예외 처리할 수 있습니다.
1. 한글만 추출
re.sub(pattern, repl, str)는 str에서 패턴에 해당하는 문자열을 찾고 repl로 변환합니다.
아래 예제와 같이 문자열에서 한글이 아닌 문자들을 찾고, 빈 문자열로 변환하여 제거할 수 있습니다. 한글이 아닌 문자를 제거하면 문자열은 한글만 남게 됩니다.
[^ㄱ-ㅎ가-힣]+
: 한글이 아닌 문자들을 의미하는 패턴^
: NOT의 의미로, 한글 패턴과 함께 사용되어 한글이 아닌 문자들을 의미하게 만들 수 있음re.sub(r'[^ㄱ-ㅎ가-힣]+', '', text)
: 한글을 제외한 문자들을 찾아서 빈 문자열로 변환
import re
text = "Python example 안녕하세요ㅋㅋㅋ 한자: 你好, 숫자: 123"
result = re.sub(r'[^ㄱ-ㅎ가-힣]+', '', text)
print(result)
Output:
안녕하세요ㅋㅋㅋ한자숫자
2. 한글만 제거
위에서 사용한 정규표현식에서 ^
을 제거하면, 문자열에서 한글만 제거할 수 있습니다.
아래 예제와 같이 sub()
로 한글만 찾고 빈 문자열로 찾아서 제거할 수 있습니다.
[ㄱ-ㅎ가-힣]+
: 한글 문자들을 의미하는 패턴
import re
text = "Python example 안녕하세요ㅋㅋㅋ 한자: 你好, 숫자: 123"
result = re.sub(r'[ㄱ-ㅎ가-힣]+', '', text)
print(result)
Output:
Python example : 你好, : 123
3. 한글, 공백 모두 제거
공백도 함께 제거하려면 공백(white space)을 의미하는 패턴(\s
)을 추가하면 됩니다.
아래 예제와 같이 sub()
로 한글과 공백 찾고 빈 문자열로 찾아서 제거할 수 있습니다.
[ㄱ-ㅎ가-힣\s]+
: 한글과 공백 문자들을 의미하는 패턴
import re
text = "Python example 안녕하세요ㅋㅋㅋ 한자: 你好, 숫자: 123"
result = re.sub(r'[ㄱ-ㅎ가-힣\s]+', '', text)
print(result)
Output:
Pythonexample:你好,:123