티스토리 뷰
영어와 한글이 섞여있는 문장에서 한글만 추출하는 방법을 알아보겠습니다.
영어, 특수문자, 한글, 한문 등.. 다양한 종류의 언어로 구성된 문자열에서 한글만 추출하고 싶을 때가 있습니다. 한글을 제외한 다른 문자들은 불필요한 문자라서 한글만 추출할 수 있고, 의미가 없는 문자들이 붙어있는 경우 필요한 문자만 추출하려고 한글만 추출하는 경우가 있습니다.
정규표현식으로 한글 추출
정규표현식을 사용하여 문자열에서 한글만 찾을 수 있고, 찾은 문장을 추출할 수 있습니다. 추출한 뒤에 다시 문장을 하나의 문자열로 연결하는 방식입니다.
- re.compile('[ㄱ-ㅎ가-힣]+') : 한글에 대한 정규표현식 패턴
- pattern.findall(str) : 패턴과 일치하는 텍스트를 모두 찾고, 각각의 문자열을 리스트로 리턴
- ''.join(matches) : 찾은 한글 문자열들을 공백 없이 하나의 문자열로 연결
- ' '.join(matches) : 찾은 한글 문자열들 사이에 공백을 추가하여 하나의 문자열로 연결
import re
str = "안녕하세요~!! Hello, 123 你 World 여러분"
pattern = re.compile('[ㄱ-ㅎ가-힣]+')
matches = pattern.findall(str)
# 띄어쓰기 없이 한글 추출
result = ''.join(matches)
print(result)
# 단어마다 띄어쓰기 추가하여 한글 추출
result = ' '.join(matches)
print(result)
Output:
안녕하세요여러분
안녕하세요 여러분
re.sub()를 이용한 방법
re.sub(pattern, repl, str)은 str에서 patten에 해당하는 문자들을 repl로 교체하는 것인데, 아래와 같이 한글이 아닌 문자열 패턴을 찾고, 빈문자열로 변환하여 제거할 수 있습니다. 그럼 아래 결과처럼 한글을 제외한 다른 문자들은 모두 제거됩니다.
- re.compile('[^ㄱ-ㅎ가-힣]+') : 한글이 아닌 문자들에 대한 정규표현식 패턴 (^는 not의 의미로, 한글이 아닌 문자로 해석)
import re
str = "안녕하세요~!! Hello, 123 你 World 여러분"
pattern = re.compile('[^ㄱ-ㅎ가-힣]+')
result = re.sub(pattern, '', str)
print(result)
Output:
안녕하세요여러분
위 코드는 아래와 같이 compile()로 패턴 객체를 대신에 r'pattern'으로 패턴을 바로 입력할 수 있습니다.
import re
str = "안녕하세요~!! Hello, 123 你 World 여러분"
result = re.sub(r'[^ㄱ-ㅎ가-힣]+', '', str)
print(result)
문자열에서 한글과 공백(Space)만 추출
문자열에서 공백(space)도 함께 추출하려면, 정규표현식에 공백에 대한 패턴을 추가하면 됩니다. 따라서 아래와 같이 한글과 공백이 아닌 문자를 찾아 제거하면 한글과 공백만 추출할 수 있습니다.
- \s : 공백 문자 1개를 의미하는 정규표현식 패턴
- [^ㄱ-ㅎ가-힣\s]+ : 한글과 공백이 아닌 문자들에 대한 패턴
import re
str = "안녕하세요~!! Hello, 123 你 World 여러분"
result = re.sub(r'[^ㄱ-ㅎ가-힣\s]+', '', str)
print(result)
'개발 > Python' 카테고리의 다른 글
[Python] 환경변수 가져오기 (os.environ) (0) | 2023.11.01 |
---|---|
[Python] 파일 생성 날짜, 수정 날짜 확인 (0) | 2023.09.23 |
[Python] 소수점 2자리까지 출력 (버림, 올림, 반올림) (0) | 2023.09.23 |
[Python] 문자열 마지막 단어 추출 (0) | 2023.09.23 |
[Python] 일정 시간마다 반복 실행 (0) | 2023.09.20 |
공지사항
최근에 올라온 글
최근에 달린 댓글
링크
TAG
- 티스토리챌린지
- 와일드보어의 땅
- android
- 리스보아 카드
- 15e 트램
- 모루정원
- 마비노기 모바일
- 포르투갈
- 12e 트램
- 원숭이의숲
- javascript
- Unreal Engine
- 다크스텀프
- 리스본
- aosp 빌드
- 안드로이드
- 주황버섯
- 오블완
- 메이플랜드
- java
- 파란버섯
- adb
- DART
- 파이썬
- 나무던전
- Flutter
- 포르투
- 와보땅
- Skia
- Python
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
글 보관함