[Python] split() 함수 완벽 정복: 문자열 쪼개기부터 sep, maxsplit 활용법까지 (예제 포함)
안녕하세요! 오늘은 파이썬에서 문자열을 다룰 때 빼놓을 수 없는 강력한 도구, split() 함수에 대해 자세히 알아보려고 합니다. split() 함수는 복잡한 문자열을 특정 규칙에 따라 깔끔하게 나누어 리스트(list) 형태로 만들어주기 때문에, 데이터 전처리나 텍스트 분석 등 다양한 상황에서 매우 유용하게 사용됩니다.
그럼 지금부터 split() 함수의 기본 사용법부터 다양한 옵션 활용까지 함께 살펴보겠습니다.
1. 파이썬 split() 함수란?
split() 함수는 문자열 객체(string object)에 내장된 메소드(method)로, 주어진 문자열을 특정 '구분자(delimiter)'를 기준으로 나누어 각 부분을 요소로 하는 리스트를 반환합니다.
1.1. 기본 사용법
가장 기본적인 split() 함수의 형태는 다음과 같습니다.
문자열.split()문자열.split(구분자)문자열.split(구분자, 분할횟수)
조금 더 명시적인 형태는 매개변수 이름을 함께 사용하는 것입니다.
문자열.split(sep=구분자, maxsplit=분할횟수)
이 중에서 sep과 maxsplit 매개변수를 사용하는 마지막 형태가 가장 정확하며, 코드의 가독성을 높여줍니다.
1.2. sep과 maxsplit 매개변수 상세 설명
sep(Separator - 구분자)- 문자열을 어떤 기준으로 나눌지 지정하는 매개변수입니다.
- 기본값 (생략 시 또는
None): 공백 문자(스페이스, 탭, 줄바꿈 등)를 기준으로 문자열을 나눕니다. 중요한 점은, 연속된 공백은 하나의 구분자로 취급되며, 결과 리스트에는 빈 문자열이 포함되지 않습니다. - 특정 문자열 지정:
sep='문자열'형태로 특정 문자나 문자열을 구분자로 지정할 수 있습니다. 예를 들어sep=','로 지정하면 쉼표를 기준으로 문자열을 분리합니다. 이 경우, 구분자가 연속해서 나타나거나 문자열의 시작/끝에 있으면 빈 문자열('')이 결과 리스트에 포함될 수 있습니다.
maxsplit(Maximum Splits - 최대 분할 횟수)문자열을 최대 몇 번까지 분할할지 지정하는 매개변수입니다.
기본값 (-1): 구분자가 나타나는 모든 지점에서 분할을 수행합니다. 즉, 제한 없이 가능한 만큼 문자열을 나눕니다.
특정 횟수 지정:
maxsplit=N(N은 0 이상의 정수)으로 설정하면, 문자열을 왼쪽에서부터 최대 N번까지만 분할합니다. 따라서 결과 리스트는 최대 N+1개의 요소를 갖게 됩니다. 예를 들어maxsplit=1이면 문자열을 한 번만 분할하여 두 개의 요소로 이루어진 리스트를 만듭니다.주의사항:
문자열.split(1)과 같이maxsplit값만 단독으로 전달하는 것은 불가능합니다.maxsplit을 숫자만으로 지정하려면 반드시sep인자가 먼저 와야 합니다. (문자열.split(',', 1))- 또는 키워드 인자로 명시해야 합니다. (
문자열.split(maxsplit=1))
2. split() 함수 활용 예제
이제 실제 예제를 통해 split() 함수가 어떻게 동작하는지 살펴보겠습니다.
2.1. 기본 분리: 공백 기준
split() 함수에 아무런 인자도 전달하지 않으면 공백(띄어쓰기, 탭, 엔터 등)을 기준으로 문자열을 나눕니다.
my_string = "파이썬 split 함수 예제입니다."
result_list = my_string.split()
print(f"원본 문자열: '{my_string}'")
print(f"split() 결과: {result_list}")
# 결과:
# 원본 문자열: '파이썬 split 함수 예제입니다.'
# split() 결과: ['파이썬', 'split', '함수', '예제입니다.']
위 예제에서 볼 수 있듯이, 여러 개의 연속된 공백도 하나의 구분자로 처리되어 깔끔하게 단어들만 리스트에 담겼습니다.
2.2. 특정 구분자 사용
이번에는 쉼표(,)를 구분자로 사용하여 문자열을 분리해보겠습니다.
csv_data = "사과,바나나,딸기,오렌지"
fruits = csv_data.split(',') # sep=',' 와 동일
print(f"원본 CSV 데이터: '{csv_data}'")
print(f"split(',') 결과: {fruits}")
# 결과:
# 원본 CSV 데이터: '사과,바나나,딸기,오렌지'
# split(',') 결과: ['사과', '바나나', '딸기', '오렌지']
# 구분자가 연속되거나, 시작/끝에 있는 경우
complex_data = "하나,,둘,셋,"
items = complex_data.split(',')
print(f"복잡한 데이터: '{complex_data}'")
print(f"split(',') 결과: {items}")
# 결과:
# 복잡한 데이터: '하나,,둘,셋,'
# split(',') 결과: ['하나', '', '둘', '셋', '']
csv_data 예제는 쉼표를 기준으로 문자열이 잘 분리되었습니다.
complex_data 예제에서는 연속된 쉼표 사이(,,)와 문자열 끝의 쉼표(,)로 인해 빈 문자열('')이 리스트에 포함된 것을 확인할 수 있습니다. 이는 sep에 특정 구분자를 지정했을 때 나타나는 특징입니다.
2.3. maxsplit으로 분할 횟수 제한
maxsplit 매개변수를 사용하여 분할 횟수를 제어할 수 있습니다.
log_entry = "ERROR:2023-10-27:Disk full:Cannot write to /var/log"
# 구분자 ':'를 사용하되, 최대 2번만 분할
log_parts_limited = log_entry.split(':', maxsplit=2)
print(f"원본 로그: '{log_entry}'")
print(f"split(':', maxsplit=2) 결과: {log_parts_limited}")
# 구분자 ':'를 사용하며, 모든 지점에서 분할 (기본값)
log_parts_all = log_entry.split(':')
print(f"split(':') 결과: {log_parts_all}")
# 결과:
# 원본 로그: 'ERROR:2023-10-27:Disk full:Cannot write to /var/log'
# split(':', maxsplit=2) 결과: ['ERROR', '2023-10-27', 'Disk full:Cannot write to /var/log']
# split(':') 결과: ['ERROR', '2023-10-27', 'Disk full', 'Cannot write to /var/log']
maxsplit=2로 설정하면, 콜론(:)을 기준으로 처음 두 번만 분할이 일어나므로 리스트는 3개의 요소를 갖게 됩니다. 마지막 요소에는 나머지 분할되지 않은 문자열 전체가 포함됩니다. 반면, maxsplit을 지정하지 않으면 모든 콜론에서 분할이 이루어집니다.
다양한 maxsplit 사용법:
s = "a-b-c-d-e"
print(s.split('-', 1)) # ['a', 'b-c-d-e']
print(s.split(sep='-', maxsplit=1)) # ['a', 'b-c-d-e']
print(s.split(maxsplit=1)) # ['a', 'b-c-d-e'] (이 경우 sep은 기본 공백)
# 만약 s가 "a b c d e" 였다면 ['a', 'b c d e']
위 예시처럼 s.split(maxsplit=1)의 경우, sep이 생략되었으므로 공백을 기준으로 1회 분할합니다.
3. 정리 및 마무리
오늘은 파이썬의 문자열 split() 함수에 대해 알아보았습니다. split() 함수는 다음과 같은 특징을 가집니다.
- 문자열을 특정 구분자를 기준으로 나누어 리스트로 반환합니다.
sep매개변수로 구분자를 지정하며, 생략 시 공백을 기준으로 합니다.- 공백 기준 시: 연속 공백은 하나로 취급, 빈 문자열 미포함.
- 특정 구분자 지정 시: 연속 구분자나 시작/끝 구분자는 빈 문자열 생성.
maxsplit매개변수로 최대 분할 횟수를 제한할 수 있으며, 결과 리스트의 길이는maxsplit + 1이 됩니다.
split() 함수는 파일에서 읽어온 데이터를 파싱하거나, 사용자의 입력을 처리하거나, 혹은 복잡한 텍스트 정보를 구조화하는 등 프로그래밍의 다양한 영역에서 필수적으로 사용됩니다. 오늘 배운 내용을 바탕으로 split() 함수를 적재적소에 활용하여 더욱 효율적인 파이썬 코드를 작성해 보시길 바랍니다.