Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

파이썬 정규식으로 문자열을 여러 구분 기호로 분할하는 방법

파이썬에서 하나의 문자열을 세미콜론, 쉼표, 콜론, 줄바꿈처럼 서로 다른 여러 구분 기호를 기준으로 나눠야 하는 경우가 종종 있습니다. 이럴 때 re 모듈의 re.split() 함수와 정규식을 활용하면 간단하게 해결할 수 있습니다.

re.split() 기본 문법

re.split(pattern, string)은 지정한 정규식 패턴과 일치하는 부분을 구분 기호로 삼아 문자열을 분할하고, 그 결과를 리스트로 반환합니다. 구분 기호가 여러 개일 때는 OR 연산자인 파이프(|)로 패턴을 연결하면 됩니다.

예제

다음 코드는 세미콜론(;), 쉼표(,), 별표(*), 줄바꿈(\n), 콜론(:)이라는 다섯 가지 구분 기호를 한 번에 적용해 문자열을 분할합니다.

import re

s = 'Beautiful; Soup\n is, good: Python* application'
result = re.split('; |, |\*|\n|:', s)
print(result)

실행 결과

위 코드를 실행하면 다음과 같은 출력이 생성됩니다.

['Beautiful', 'Soup', ' is', 'good', ' Python', ' application']

정규식 패턴 해석

패턴 '; |, |\*|\n|:'은 다음 요소들로 구성되어 있습니다.

  • ; — 세미콜론 뒤에 공백이 오는 경우
  • , — 쉼표 뒤에 공백이 오는 경우
  • \* — 별표 문자(정규식에서 *는 특수 문자이므로 역슬래시로 이스케이프 필요)
  • \n — 줄바꿈 문자
  • : — 콜론

패턴 중 어느 하나라도 일치하면 해당 위치에서 문자열이 잘리며, 일치한 구분 기호 자체는 결과 리스트에 포함되지 않습니다.

응용: 공백까지 깔끔하게 제거하기

위 예제의 결과에는 구분 기호 뒤의 공백이 남아 있습니다. 분할된 문자열에서 앞뒤 공백까지 제거하고 싶다면 문자 집합과 strip()을 함께 사용하는 것이 좋습니다.

import re

s = 'Beautiful; Soup\n is, good: Python* application'
result = [part.strip() for part in re.split('[;,:\n*]', s)]
print(result)
['Beautiful', 'Soup', 'is', 'good', 'Python', 'application']

이처럼 re.split()을 활용하면 단일 구분 기호만 처리하는 str.split()과 달리, 복잡하고 다양한 조건의 구분 기호를 유연하게 다룰 수 있습니다.