문자열 처리

2023. 3. 17. 23:53Python/실전 예제로 배우는 파이썬 프로그래밍

메타문자를 이용하여 패턴(정규 표현식)을 작성하고, re 모듈에서 제공하는 함수들을 이용하여 패턴을 문자열에 적용해서 패턴과 일치되는 문자열을 찾고, 일치 여부를 검사하고, 다른 문자열로 치환하는 과정을 예문으로 알아봅니다.

 

문자열 찾기

pattern은 메타문자를 이용하여 작성한 정규 표현식, string은 처리할 문자열을 의미하고, flags=0은 기본값 0을 가지고 있기 때문에 일반적으로 생략합니다. findall() 함수는 패턴과 일치되는 문자열이 있으면 해당 문자열을 리스트(list) 자료구조로 반환하고, 일치하는 문자열이 없으면 빈 리스트([])로 반환합니다. 

 

형식

import re
re.findall(pattern, string[, flags=0])

실습 문자열 찾기 예시

import re	# 모듈 추가 - 방법1
from re import findall	# 모듈 추가 - 방법2

st1 = '1234 abc홍길동 ABC_555_6 이사도시'

# (1) 숫자 찾기
print(findall('1234', st1))
print(findall('[0-9]', st1))
print(findall('[0-9]{3}', st1))
print(findall('[0-9]{3,}', st1))
print(findall('\\d{3,}', st1))


[3]
0초
# 접두어/접미어
print(findall('^test', st2))	# 접두어
print(findall('st$', st2))	# 접미어

# 종료 문자 찾기: abc, mbc
print(findall('.bc', st2))

# 시작 문자 찾기
print(findall('t.', st2))


['1234']
['1', '2', '3', '4', '5', '5', '5', '6']
['123', '555']
['1234', '555']
['1234', '555']

# (2) 문자열 찾기
print(findall('[가-힣]{3,}', st1))
print(findall('[a-z]{3}', st1))
print(findall('[a-z][A-Z]{3}', st1))

['홍길동', '이사도시']
['abc']
['abc', 'ABC']

# (3) 특정 위치의 문자열 찾기
st2 = 'testlabcABC 123mbc 45test'

# 접두어/접미어
print(findall('^test', st2))	# 접두어
print(findall('st$', st2))	# 접미어

['test']
['st']

# 종료 문자 찾기: abc, mbc
print(findall('.bc', st2))

['abc', 'mbc']

# 시작 문자 찾기
print(findall('t.', st2))

['te', 'tl', 'te']

# (4) 단어 찾기(\\w) - 한글+영문+숫자
st3 = 'test^홍길동 abc 대한*민국 123$tbc'
words = findall('\\w{3,}', st3)
print(words)

['test', '홍길동', 'abc', '123', 'tbc']

# (5) 문자열 제외: x+(x가 1개 이상 반복)
print(findall('[^^*$]+', st3))	# 특수문자 제외

['test', '홍길동 abc 대한', '민국 123', 'tbc']

 

'Python > 실전 예제로 배우는 파이썬 프로그래밍' 카테고리의 다른 글

정규 표현식(Regular Expression)  (0) 2023.03.16
객체지향프로그래밍 연습문제  (0) 2023.03.15
패키지와 모듈  (0) 2023.03.14
내장클래스  (0) 2023.03.13
객체지향 기법  (0) 2023.03.12