8월 30, 2023

[Python] Split 함수에 대해 알아보자 (sep, maxsplit 예제)

파이썬 문자열을 특정 기준으로 나누어 리스트로 만들수 있는 함수가 있다. 

가장 대표적으로 예시를 생각해보았을 때, 만약 문자열이 띄어쓰기를 기준으로 "a b c d z k" 이런 식으로 있다면 우리는 이 문자열을 띄어쓰기를 기준으로 쪼개서 각각 list의 0번째에는 a가, list의 1번째에는 b가 2번째에는 c가... 

이렇게 들어갈 수 있도록 만들고 싶은 것이다.

 

이처럼 파이썬은 이와 같은 경우에 split 함수를 사용한다. 

 

split 함수도 간단해보이지만 parameter에 무엇이 들어가냐에 따라 조금씩 사용법이 달라지게 된다.


1. 문자열.split() => 디폴트로 띄어쓰기와 엔터에 의해 구분되는 경우 

가장 대표적으로 split 함수를 적용할 수 있는 경우이다. 

어떤 기준에 의해 split 되는지가 명시되어 있지 않은 경우에는 default로 띄어쓰기와 엔터에 의해 구분된다. 

 

즉, 위에서 예시로 들었던 것과 같이 

s= "a b c d e f g"
div= s.split()

이라고 했을 경우 div 에는 각각 a/b/c/d/e/f/g 로 쪼개진 배열이 만들어진다고 생각하면 된다.


2. 문자열.split( '구분자' ) => 원하는 구분자로 split하고 싶을 경우

 

반면 모든 문자열이 띄어쓰기로 구분이 되어있지 않을 수도 있다. 예를 들어 "a/b/c/d"라는 문자열이 있다면 우리는 "/" 에 의해 구분하고 싶을 것이다. 이처럼 띄어쓰기가 아닌 다른 구분자에 의해 문자열을 구분하고 싶다면 split 함수 괄호 안에 구분하고 싶은 구분자를 써준다. 

 

마찬가지로 아주 간단한 예시를 들어보자.

s= "a.b.c.d.e.f.g"
div= s.split('.')

1번의 경우와 거의 동일하지만 이번에는 구분자가 띄어쓰기가 아닌 '.' 인것만 다르다. 이럴 경우에 split 함수 괄호 안에 ','를 써서 구분할 수 있다.

 

명시적으로 구분자가 '.' 다 라고 말하는 방법도 있다.

 

바로 split (sep ='.')를 사용하는 것이다. 

s= "a.b.c.d.e.f.g"
div= s.split(sep= '.')

이는 위와 같은 문법이지만 조금 더 명시적으로 나는 점에 의해 구분하고 싶다라는 의미의 가독성을 높여준다.

 


3. 문자열.split(sep= '구분자', maxsplit = 숫자) => 모든 구분자로 split 하지 않고 나누는 최대 횟수를 제한하고 싶을 때 

 

문자열을 구분하고는 싶으나 나누는 최대 횟수를 제한하고 싶을 때가 있다.

예를 들어 aa.bb.cc.dd.ee라는 문자열이 있는데 aa / bb/ cc/ dd.ee 이렇게 나누고 싶을 수 있다. 즉 모든 구분자 .에 의해 split하는 것이 아니라, 나누는 최대 횟수를 제한하는 경우이다. 

 

이런 경우는 2번처럼 구분자 parameter 뒤에 maxsplit parameter를 하나 더 넣어주면 된다. 

s= "a.b.c.d.e.f.g"
div= s.split(sep= '.', maxsplit=3)

이런식으로 써 주면 div에는 a / b/ c / d.e.f.g 로 나누어진 숫자 4짜리 배열이 만들어 질 것이다.


이런식으로 오늘은 python split 함수에 대하여 알아보았다. 

간단해보이지만 다양한 문법이 숨어있고, 유용한 경우가 많으니 잘 활용하길 바란다. 

 

python은 이러한 함수 덕분에 string을 처리하기 유리한 언어라고도 알려져있다.