language/python

re.split() 과 str.split() 차이

아르르르를를르 2022. 6. 17. 17:40

문자열을 정규식을 구분자로 하여 split 하는데 정규식 package re를 사용한 re.split() string 내부 메소드를 사용한 str.split() 의 결과값이 다른 이슈가 있었다.

 

import re

pattern = r',(?=(?:[^\"]*\"[^\"]*\")*[^\"]*$)'
data = "\"UK/밑바닥부터 시작하는 딥러닝\",homepage,http://www.sample.co.kr"  
test1 = re.split(pattern, data)
test2 = data.split(pattern)

print(test1)
print(test2)

실행 결과

 

분명 같은 정규식인데 re.split에서는 되고 str.split에서는 안된다.

이유는 당연한 거였는데 re.split 메소드는 regex pattern으로, 반면에 str.split 메소드는 문자열로 인자를 받기 때문이였다.

 

 

참고

 

re — 정규식 연산 — Python 3.10.5 문서

re — 정규식 연산 소스 코드: Lib/re.py 이 모듈은 Perl에 있는 것과 유사한 정규식 일치 연산을 제공합니다. 패턴과 검색 할 문자열은 모두 유니코드 문자열(str)과 8비트 문자열(bytes)이 될 수 있습니

docs.python.org

 

내장형 — Python 3.10.5 문서

다음 섹션에서는 인터프리터에 내장된 표준형에 관해 설명합니다. 기본 내장 유형은 숫자, 시퀀스, 매핑, 클래스, 인스턴스 및 예외입니다. 일부 컬렉션 클래스는 가변입니다. 제자리에서 멤버

docs.python.org