Python/파이썬 기초

파이썬 split 함수 용도, 사용법 (문자열 -> 리스트)

jimmy_AI 2021. 12. 4. 13:37
반응형

파이썬으로 텍스트, csv 등 파일에서 원하는 정보를 가져와 데이터처리를 할 때,

파싱 과정에 있어 무척 유용한 split 함수의 사용법에 대해서 살펴보고 용도에 대해서 생각해보는 시간을 가져보도록 하겠습니다.

 

파이썬 split 함수 구조(argument 종류)

split 함수의 구조는 매우 간단 합니다. 어떤 문자열을 기준으로 나눌지를 결정하는 sep 인자가 첫 번째로 오고, 최대 분할 횟수를 몇 번으로 제한할지를 결정하는 maxsplit 인자가 두 번째로 오는 것이 전부입니다.

 

sep 인자는 기본으로 공백(' ')을 기준으로 분할하는 것으로 되어있고, maxsplit은 지정하지 않으면 최대 가능 횟수만큼 분할을 계속 진행하는 것으로 되어있습니다.

 

split 함수의 반환 값은 문자열에서 분할된 결과를 리스트에 순서대로 담아서 반환해줍니다.

 

그렇다면, 실제 예제를 살펴보도록 하겠습니다.

a = '가 나 다 a/b/c'

a.split() # ['가', '나', '다', 'a/b/c'] -> 공백을 기준으로 나눈 상황

a.split(' ', 2) # ['가', '나', '다 a/b/c'] -> 최대 분할 횟수 2회라서 마지막 원소가 분리 안됨

a.split('/') # ['가 나 다 a', 'b', 'c'] -> '/'를 기준으로 나눈 상황

# a.split().split('/') 불가능(리스트에는 split 함수 X)
b = a.split() # b[3] = 'a/b/c' 의 문자열
c = b[:3] + b[3].split('/') # ['가', '나', '다', 'a', 'b', 'c']

최대 분할 횟수를 정한 경우도 주목해서 보시고, split 함수 연속 두 번 적용이 불가능하다는 점도 확인해주시면 좋을 듯 합니다.

 

split 함수는 기본적으로 문자열 자료형에만 사용할 수 있으므로, 두 번 분할을 원하는 경우 한 번 분할된 결과의 리스트의 각 원소에 접근하여 다시 split을 적용해주어야 합니다.

 

 

split 함수 심화 케이스

이번에는 길이 2 이상의 문자열로 나누는 경우와, 각각 다른 문자열로 두 번 나누는 경우의 심화된 케이스를 살펴보겠습니다.

a = 'cabdabeabfabgabh' # c ~ h 사이에 ab가 들어있는 경우

# 길이가 2 이상인 문자열로 split 가능
a.split('ab') # ['c', 'd', 'e', 'f', 'g', 'h']

b = 'a#.b.#c.#.d#e' # .과 #으로 a ~ e가 나누어져 있는 상황

# replace 적용으로 같은 문자로 통일시킨 뒤, 나눌 수 있음
b = b.replace('.', '#') # a##b##c###d#e
c = b.split('#') # ['a', '', 'b', '', 'c', '', '', 'd', 'e']
d = [i for i in c if i != ''] # ['a', 'b', 'c', 'd', 'e']

길이가 2 이상인 문자열인 'ab'로 split을 진행하는 케이스를 통해 긴 문자열로도 얼마든지 split이 가능하다는 사실을 확인해볼 수 있었습니다.

 

두 번 split을 진행하는 경우는 정규 표현식을 이용한 방법 등 다양한 방법이 있지만, 여기서는 replace 함수로 같은 문자열로 통일 시켜주고 이후 분할을 진행한 결과에서 공백문자만 지워주는 방법으로 진행한 결과를 살펴보았습니다.