반응형

Python에서 문자열을 구분자로 분할할 때 str.split 을 사용해서 분리한다

그런데, 구분자가 여러개일 때의 분리가 필요해서 찾아보게 되었다.

 

re.split 사용법

import re

result = re.split(pattern, string, maxsplit=0, flags=0)

re를 import 해준다

 

pattern : 구분자 패턴

string : 분할할 문자열

maxsplit=0 : 수행할 최대의 분할 수로, 기본값은 0(생략가능)

flags=0 : 선택적 플래그 인자(생략가능)

 

여러 구분자로 나누기

ex)

text = "가1나다라1마바사2아자차1카타"

print(text.split("1"))

print(re.split("1|2",text))

결과값
['가', '나다라', '마바사2아자차', '카타']
['가', '나다라', '마바사', '아자차', '카타']

구분자는 "|" 로 나눌 수 있다

혹은 [] 대괄호 안에 넣어서 구분할 수도 있다

text = "가1나다라1마바사2아자차1카타"

print(text.split("1"))

print(re.split("[12]",text))

결과값
['가', '나다라', '마바사2아자차', '카타']
['가', '나다라', '마바사', '아자차', '카타']

 

공백으로 나누기

text = "가 나다라    마바사  아자차 카타"

print(text.split(" "))

print(re.split(r"\s",text))

print(re.split(r"\s+",text))


결과값
['가', '나다라', '', '', '', '마바사', '', '아자차', '카타']
['가', '나다라', '', '', '', '마바사', '', '아자차', '카타']
['가', '나다라', '마바사', '아자차', '카타']

\s 문자열 패던을 입력하면 공백으로 나눌 수 있다
\s+를 사용하면 공백이 여러개라도 하나의 공백으로 처리해서 나눌 수 있다!

 

maxsplit

text = "가 나다라    마바사  아자차 카타"

print(re.split(r"\s+",text, maxsplit=1))
print(re.split(r"\s+",text, maxsplit=2))
print(re.split(r"\s+",text, maxsplit=3))

결과값
['가', '나다라    마바사  아자차 카타']
['가', '나다라', '마바사  아자차 카타']
['가', '나다라', '마바사', '아자차 카타']

maxsplit 은 분할을 제한한다

 

값이 1이면 2개로 분할, 2이면 3으로 분할... 이런식으로 분할은 해당 값 만큼 분할 되어서 나온 결과값은 값+1

 

flag는 사실 뭘 하는건지 모르겠다...

re.split을 이용해서 크롤링 값을 나눠서 저장하는거에 유용하게 사용했다

 

 

https://docs.python.org/3/library/re.html

반응형

+ Recent posts