Hey Tech
[파이썬/NLP] 문자열 치환하기 (찾아바꾸기) 본문
📌 Text 빅데이터분석 플랫폼 베타테스트 참가자 모집 중!(네이버페이 4만 원 전원 지급)
👋 안녕하세요, 코딩이 필요 없는 AI/빅데이터 분석 All in One 플랫폼 <DATA101> 개발팀입니다.
😊 저희 서비스를 사용해 보시고 경험담을 들려주세요 :)
💸 참여해 주신 "모든" 분들께 네이버페이 4만 원 쿠폰을 지급해 드립니다.
👨💻 참여 희망 시 카톡플러스친구 1:1 채팅 or 인스타그램 DM 부탁드립니다 :)
📆 참여기간 : 11/25(월)~11/29(금) 11:00~21:00 중 택1 (1시간 1타임)
👉 참여장소 : 강남역 인근 스터디카페 미팅Room
📍 소요시간 : 총 40분 내외(서비스 체험 및 인터뷰 포함)
✅ 참가조건 : Text 빅데이터 분석 업무 경험자
👉 참가 가능일정 조회하기 : https://url.kr/n8k8gu
- 카톡플친 : http://pf.kakao.com/_SxltHG/chat
- 인스타그램 : https://www.instagram.com/data101.official/
안녕하세요, 오늘은 파이썬을 이용하여 문자열을 치환하는 방법에 대해 공유해 드립니다.
바로 시작하죠!
문자열 치환은 언제 사용할까?
위의 스크린샷처럼 한 번쯤은 한글, 워드, 엑셀 등에서 "찾아 바꾸기" 기능을 사용해 보셨을 것입니다.
문자열 치환은 이처럼 특정 문자를 찾아서 변경하거나 특정 문자를 찾아 삭제할 때 주로 사용합니다.
이 기능은 파이썬의 *정규표현식(regular expression)을 지원하는 re 모듈 내 sub 함수를 통해 이용할 수 있습니다.
*정규표현식이란?
정규표현식은 특정 패턴을 갖는 문자열을 '검색', '치환', '제거'하는 기능을 지원하는 기능입니다.
re 패키지
import re
먼저, re 패키지를 불러 옵니다.
re.sub
re 모듈의 sub 함수(substitute) 파라미터 입력방식은 아래와 같습니다.
# re.sub(pattern, repl, string, count)
re.sub(pattern = "변환 전 문자", repl = "변환 후 문자", \
, string = "문자열", count = 변환할 횟수)
count 파라미터는 optional input 이기 때문에 따로 입력하지 않으면 default 값으로 pattern이 보이지 않을 때까지 문자열을 치환합니다.
참고로 문자열 내 pattern은 좌측에서 우측 순으로 치환됩니다.
예시1: 일치하는 문자를 특정 문자로 3회 치환하기
print(re.sub(pattern = "apple", repl = "banana", \
string = "applebanana apple apple banana appleMango", \
count = 3))
예시1의 결과
bananabanana banana banana banana appleMango
apple이라는 패턴이 4번째 발견된 "appleMango" 내 "apple"이라는pattern 이 치환되지 않은 것을 볼 수 있습니다.
예시2: 일치하는 문자를 3회 제거하기
특정 문자는 어떻게 제거할까요?
이 역시 문자열 치환의 개념으로 해결할 수 있습니다.
바로 특정 문자를 공백으로 치환하면 되죠.
print(re.sub("apple", "", \
"applebanana apple apple banana appleMango", \
count = 3))
*참고: sub 함수는 파라미터의 이름은 생략하고 값만 입력해 주어도 무방합니다.
예시2의 결과
banana banana appleMango
치환할 단어가 공백(empty)이기 때문에 앞서 살펴본 예시1과는 다르게 "apple"이라는 단어가 3회 나올 때까지 문자열에서 단어가 제거되어 출력되는 것을 볼 수 있습니다.
정규표현식 유용한 패턴
패턴 | \ 표현 | 설명 |
[abcd] | - | a 또는 b 또는 c 또는 d |
[a-d] | - | a 부터 d 까지 |
[a-z] | - | 알파벳 소문자 전체 |
[A-z] | - | 알파벳 대문자 전체 |
[a-zA-z] | - | 모든 알파벳 |
[ㄱ-ㅎ가-힣] | - | 모든 한글 |
[^ㄱ-ㅎ가-힣] | - | 모든 한글 외 |
[0-9] | \d | 모든 숫자 |
[^0-9] | \D | 숫자 외의 모든 문자 (^가 맨 앞에 위치) |
[0-9a-zA-Z] | \w | 알파벳 및 숫자 |
[^0-9a-zA-Z] | \W | 알파벳 및 숫자 외의 모든 문자 |
\t | \s | 탭(tab) 문자 |
\n | \s | 개행(newline) 문자 |
\r | \s | 리턴(return) 문자 |
. | - | 모든 문자 |
| | - | |를 기준으로 좌우에 해당하는 문자 중 하나 (예를 들어 "apple | banana" 라고 입력하면 apple 또는 banana 중에 하나의 패턴이라도 일치하는지 여부 확인) |
위 표와 같이 정규표현식의 유용한 패턴이 있습니다.
"패턴" 또는 "\ 표현" 칼럼 중 해당하는 값 하나를 정규표현식의 pattern 파라미터에 입력하면 일일이 찾을 패턴을 입력할 필요가 없습니다.
예시3: 한글 외 모든 문자 삭제하기
example_string = "이 string은 1번째 example 입니다ㅎㅎ."
print(re.sub('[^ㄱ-ㅎ가-힣]', '', example_string))
예시3의 결과
이 은 번째 입니다ㅎㅎ
패턴으로 한글 외의 모든 문자를 찾을 수 있도록 ^ 기호를 앞에 붙여 주었습니다.
이에 알파벳뿐만 아니라 숫자, 구두점까지 한글 외 문자에 해당하는 패턴을 모두 찾고 이를 정상적으로 삭제한 것을 확인할 수 있습니다.
👨💻 맞춤 서비스
저희 AI/BigData 분석 솔루션 전문 브랜드 <데이터워너원 DATA101>에서는
맞춤형 데이터 수집부터 통계분석, 텍스트마이닝, AI 모델링, 논문작성을 지원해 드립니다 :)
자세한 내용은 아래 링크를 참고해 주세요!
포스팅에 오류가 있을 경우 댓글 남겨주시면 감사드리겠습니다.
그럼 즐거운 하루 보내시길 바랍니다 :)
고맙습니다.
'AI & 빅데이터 > 자연어처리(NLP)' 카테고리의 다른 글
[NLP] Bag of Words(BoW) 개념 및 실습 (0) | 2022.03.23 |
---|---|
[논문 리뷰] Leem, B. H., & Eum, S. W. (2021). Using text mining to measure mobile banking service quality. Industrial Management & Data Systems. (0) | 2021.09.20 |
[파이썬/NLP] 이모티콘을 텍스트로, 텍스트를 이모티콘으로 변환하기! (0) | 2021.02.01 |
[NLP] KoNLPy Mecab 고유명사 등록 방법 (1) | 2021.01.24 |
[파이썬/NLP] 빠르게 한국어 형태소 분석하는 방법 (feat. KoNLPy) (0) | 2021.01.18 |