Python에서 split() 메서드를 사용하는 방법
이 튜토리얼에서는 파이썬의 split() 메서드를 활용하여 문자열을 문자열 리스트로 변환하는 방법을 상세히 다룹니다.
파이썬에서 문자열을 다룰 때, 내장 문자열 메서드를 통해 대문자 변환, 문자열 정렬 등 다양한 문자열 조작이 가능합니다. 그 중 하나인 .split() 메서드는 문자열을 특정 구분자를 기준으로 분할하여 문자열 리스트를 생성하는 데 사용됩니다. 이 튜토리얼을 통해 다양한 예시 코드를 통해 split() 메서드를 자세히 살펴보겠습니다.
이 튜토리얼을 마치면 여러분은 다음 내용을 이해할 수 있게 될 것입니다:
.split()메서드의 작동 원리sep및maxsplit매개변수를 이용하여 분할 과정을 맞춤 설정하는 방법
그럼 시작해 볼까요!
파이썬 split() 메서드의 문법
파이썬의 split() 메서드를 사용할 때의 일반적인 문법은 다음과 같습니다.
string.split(sep, maxsplit)
# 매개변수:
sep, maxsplit
# 반환값:
문자열 리스트
여기서 string은 어떠한 유효한 파이썬 문자열이든 될 수 있습니다.
sep 및 maxsplit 매개변수는 선택적입니다.
sep는 문자열을 분할하는 데 사용될 구분자를 지정합니다. 문자열 형태로 제공되어야 합니다.maxsplit은 문자열을 분할할 최대 횟수를 지정하는 정수입니다.
만약 선택적 매개변수를 제공하지 않으면 기본값이 적용됩니다.
sep값을 명시적으로 제공하지 않으면 공백이 기본 구분자로 사용됩니다.maxsplit에 값을 지정하지 않으면 기본값으로 -1이 설정되며, 이는 문자열이 모든 구분자에서 분할됨을 의미합니다.
일반적인 언어로 표현하자면:
split() 메서드는 sep 매개변수에 의해 지정된 구분자가 발견될 때마다 문자열을 최대 maxsplit 횟수만큼 분할합니다.
이제 파이썬 split() 메서드의 문법을 알았으니, 몇 가지 예시 코드를 작성해 보겠습니다.
파이썬 문자열을 문자열 리스트로 분할하기
만약 여러분이 파이썬 3을 사용하고 있다면, 파이썬 REPL에서 다음 코드를 실행하면서 튜토리얼을 따라올 수 있습니다.
REPL을 시작하려면 터미널에서 다음 명령어 중 하나를 실행하십시오.
$ python
$ python -i
▶️ koreantech.org의 파이썬 편집기에서도 이 예제를 직접 시도해 볼 수 있습니다.
아래 예시에서 py_str은 파이썬 문자열입니다. 매개변수 없이 py_str에서 .split() 메서드를 호출하고 그 결과를 확인해 봅시다.
py_str = "파이썬에서 split() 사용법 배우기"
py_str.split()
# 출력 결과
['파이썬에서', 'split()', '사용법', '배우기']
위에서 볼 수 있듯이, 문자열은 공백을 기준으로 분할됩니다.
구분자 발생 시 파이썬 문자열 분할
#1. 첫 번째 예시로, 이중 밑줄 (__)을 구분자로 사용하여 py_str 문자열을 분할해 보겠습니다.
py_str = "모두__최고야"
py_str.split(sep='__')
# 출력 결과
['모두', '최고야']
#2. 다른 예시를 살펴보겠습니다. 여기에서 py_str은 마침표 (.)로 끝나는 세 개의 문장으로 구성되어 있습니다.
py_str = "코딩이 좋아요. 파이썬은 멋져요. 2022년에 파이썬을 배우고 있어요."
py_str.split(sep='.')
# 출력 결과
['코딩이 좋아요', ' 파이썬은 멋져요', ' 2022년에 파이썬을 배우고 있어요']
▶️ 이 문자열에 대해 .split() 메서드를 호출하면, '.'를 기준으로 문자열이 분할됩니다. 위 코드 셀에서 볼 수 있듯이, 결과 리스트는 구분자를 기준으로 세 개의 문장을 포함합니다.
#3. 몇 가지 질문을 해보겠습니다.
- 만약 문자열에서 구분자가 나타나지 않으면 어떻게 될까요?
- 이 경우 분할은 어떻게 이루어질까요?
다음은 예시입니다.
별표 (*)를 기준으로 py_str을 분할하려 합니다.
py_str = "이 줄에는 별표가 없습니다."
py_str.split(sep='*')
# 출력 결과
['이 줄에는 별표가 없습니다.']
– 아무 일도 일어나지 않았습니다.
이 경우, 분할이 이루어질 수 없으므로 결과 리스트에는 전체 문자열이 그대로 포함됩니다.
다음 섹션에서는 텍스트 파일의 내용을 다룰 때 split() 메서드를 어떻게 활용하는지 알아보겠습니다.
파이썬 파일 내용 분할하기
파이썬에서 텍스트 파일을 다룰 때, 파일 내용을 구분자를 기준으로 분할하여 더 쉽게 처리해야 할 경우가 있습니다.
다음은 샘플 텍스트 파일입니다:
with open('sample.txt') as f:
content = f.read()
str_list = content.split(sep='...')
for string in str_list:
print(string, end='')
아래 코드 스니펫은 샘플 텍스트 파일의 내용에 split을 사용하는 방법을 보여줍니다.
- 위 코드는 다음 작업을 수행합니다:
with컨텍스트 관리자를 사용하여'sample.txt'텍스트 파일을 열고 작업합니다.- 파일 객체
f의.read()메서드를 사용하여 파일 내용을 읽습니다. - 줄임표 (
...)를 구분자로 사용하여 내용을 분할하고str_list리스트에 저장합니다.
str_list를 순회하며 각 문자열에 접근하고 출력합니다.
# 출력 결과
이것은 샘플 텍스트 파일입니다.
여기에는 다음 정보가 포함되어 있습니다.
<a href="https://koreantech.org.com/pcap-certification/">파이썬 프로그래밍</a> 시작하기
2022년 StackOverflow 개발자 설문 조사에 따르면
파이썬은 가장 사랑받는 프로그래밍 언어 중 하나입니다.
그러니 무엇을 기다리고 있나요? 지금 바로 배우세요!
출력 결과는 위와 같습니다.
연습: 텍스트 파일의 내용을 선택한 구분자로 분할해 보세요.
파이썬 문자열을 청크로 분할하기
문자열을 한 번 분할하면 두 개의 청크를 얻게 됩니다. 두 번 분할하면 세 개가 됩니다.
📋 일반적으로 문자열을 K번 분할하면 K+1개의 청크를 얻습니다.
아래에 설명되어 있습니다.
maxsplit 매개변수의 동작 방식 (이미지 저작자)
py_str = "청크#1 더 큰 청크입니다, 청크#2"
py_str.split(maxsplit=1)
# 출력 결과
['청크#1', "더 큰 청크입니다, 청크#2"]
#1. maxsplit을 1로 설정했습니다. 구분자를 지정하지 않았으므로 기본적으로 분할은 공백을 기준으로 수행됩니다.
리스트의 두 번째 청크에 공백이 포함되어 있어도, 분할은 이제 maxsplit 값 1에 의해 제어되므로 추가 분할은 발생하지 않습니다.
py_str = "청크#1 청크#2 나는 큰 청크#3입니다. 공백이 있지만요."
py_str.split(maxsplit=2)
# 출력 결과
['청크#1', '청크#2', "나는 큰 청크#3입니다. 공백이 있지만요."]
#2. maxsplit 값을 2로 늘리고 다음 예에서 분할이 어떻게 일어나는지 관찰해 봅시다.
이전 예와 마찬가지로 maxsplit 값은 분할 횟수를 결정합니다. 공백이 처음과 두 번째로 나타난 후에 분할된 세 개의 청크를 얻습니다.
#3. maxsplit을 구분자가 나타나는 횟수보다 큰 값으로 설정하면 어떻게 될까요?
py_str = "여기, 에는, 쉼표가, 4개, 있습니다"
py_str.split(maxsplit=8)
# 출력 결과
['여기,', '에는,', '쉼표가,', '4개,', '있습니다']
다음 코드 셀에서, 문자열에 쉼표가 4개만 있는데 maxsplit을 8로 설정합니다.
여기서 split 메서드는 쉼표가 네 번 나타날 때 모두 py_str을 분할합니다. maxsplit을 -1보다 작은 값 (예: -7)으로 설정해도 구분자가 있는 모든 위치에서 분할이 수행됩니다.
다음으로, 우리가 배운 내용을 모두 조합하여 sep과 maxsplit 매개변수를 함께 사용해 보겠습니다.
구분자를 기준으로 파이썬 문자열을 청크로 분할하기
py_str = "청크#1, 청크#2, 나는 큰 청크#3입니다. ,도 포함하고 있습니다."
py_str.split(sep=',', maxsplit=2)
# 출력 결과
['청크#1', ' 청크#2', " 나는 큰 청크#3입니다. ,도 포함하고 있습니다."]
#1. 쉼표(,)가 나타날 때마다 문자열 py_str을 세 개의 청크로 분할해야 한다고 가정해 보겠습니다. 이를 위해 메서드 호출에서 sep 값을 ','로 설정하고, maxsplit 값을 2로 설정할 수 있습니다.
출력 결과에서 볼 수 있듯이, 구분자가 처음 두 번 나타날 때 두 번 분할이 수행됩니다.
#2. 구분자 sep은 항상 특수 문자일 필요는 없습니다. 이전에 사용했던 이중 밑줄과 같은 일련의 특수 문자일 수도 있고, 단순히 하위 문자열일 수도 있습니다.
py_str = "자료 구조를 배워야 합니다, 알고리즘을 배우고, 더 많이 배우세요!"
py_str.split(sep='배우', maxsplit=2)
# 출력 결과
['자료 구조를 ', '야 합니다, 알고리즘을 ', '고, 더 많이 배우세요!']
문자열 '배우'를 sep 인수로 설정하고, maxsplit의 다양한 값에 대해 분할이 어떻게 수행되는지 살펴봅시다. 여기서는 maxsplit을 2로 설정합니다.
py_str = "자료 구조를 배워야 합니다, 알고리즘을 배우고, 더 많이 배우세요!"
py_str.split(sep='배우', maxsplit=-1)
# 출력 결과
['자료 구조를 ', '야 합니다, 알고리즘을 ', '고, 더 많이 ', '세요!']
#3. 문자열 '배우'가 나타나는 모든 위치에서 py_str을 분할하려면 maxsplit 매개변수 없이 sep='배우'를 설정하여 .split() 메서드를 호출할 수 있습니다. 이는 아래 코드 셀과 같이 명시적으로 maxsplit 값을 -1로 설정하는 것과 같습니다.
'배우'가 나타나는 모든 위치에서 분할이 이루어지는 것을 확인할 수 있습니다.
마무리
이제 여러분은 파이썬 문자열과 함께 .split() 메서드를 사용하는 방법을 이해하셨기를 바랍니다.
- 이 튜토리얼의 요약은 다음과 같습니다.
- 파이썬의 내장
.split()메서드는 문자열을 문자열 리스트로 분할합니다. string.split()을 사용하여 기본 구분자인 공백을 기준으로 문자열을 분할합니다.
string.split(sep, maxsplit)을 사용하여 sep 구분자가 나타날 때마다 문자열을 최대 maxsplit 횟수만큼 분할합니다. 결과 리스트는 maxsplit+1개의 항목을 갖습니다.
다음 단계로, 파이썬 문자열이 회문인지 아나그램인지 확인하는 방법을 배워보는 것은 어떨까요?