Python에서 split() 메서드를 사용하는 방법

이 튜토리얼에서는 파이썬의 split() 메서드를 활용하여 문자열을 문자열 리스트로 변환하는 방법을 상세히 다룹니다.

파이썬에서 문자열을 다룰 때, 내장 문자열 메서드를 통해 대문자 변환, 문자열 정렬 등 다양한 문자열 조작이 가능합니다. 그 중 하나인 .split() 메서드는 문자열을 특정 구분자를 기준으로 분할하여 문자열 리스트를 생성하는 데 사용됩니다. 이 튜토리얼을 통해 다양한 예시 코드를 통해 split() 메서드를 자세히 살펴보겠습니다.

이 튜토리얼을 마치면 여러분은 다음 내용을 이해할 수 있게 될 것입니다:

  • .split() 메서드의 작동 원리
  • sepmaxsplit 매개변수를 이용하여 분할 과정을 맞춤 설정하는 방법

그럼 시작해 볼까요!

파이썬 split() 메서드의 문법

파이썬의 split() 메서드를 사용할 때의 일반적인 문법은 다음과 같습니다.

string.split(sep, maxsplit)

# 매개변수:
sep, maxsplit

# 반환값:
문자열 리스트

여기서 string은 어떠한 유효한 파이썬 문자열이든 될 수 있습니다.

sepmaxsplit 매개변수는 선택적입니다.

  • 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)으로 설정해도 구분자가 있는 모든 위치에서 분할이 수행됩니다.

다음으로, 우리가 배운 내용을 모두 조합하여 sepmaxsplit 매개변수를 함께 사용해 보겠습니다.

구분자를 기준으로 파이썬 문자열을 청크로 분할하기

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개의 항목을 갖습니다.

다음 단계로, 파이썬 문자열이 회문인지 아나그램인지 확인하는 방법을 배워보는 것은 어떨까요?