파이썬
기본 데이터 타입
문자열
자르기

파이썬 split() 문자열 자르기: 한글자씩, 구분자 여러개, 공백 제거, 숫자 문자, regex

프로그래밍, 특히 텍스트 기반 데이터를 다룰 때 가장 일반적인 작업 중 하나는 문자열 자르기입니다. 파이썬은 문자열을 다루는 데 있어 거의 모든 프로그래밍 언어 중 가장 쉽고 강력하며 직관적입니다.

문자열을 자르는 작업도 마찬가지입니다. 파이썬은 문자열을 자르는 다양한 내장 메서드와 함수를 제공합니다.

이번 포스팅은, 문자열을 자르고 조작하는 다양한 테크닉과, 사용 예제를 살펴보면서, 파이썬으로 문자열을 다루는 방법을 정리하겠습니다.

1. list() 메서드로 한글자씩 잘라 리스트 만들기

파이썬에서 문자열은 작은따옴표 또는 큰따옴표로 묶인 문자 시퀀스입니다. 문자열은 immutable 즉, 불변이므로 한 번 선언한 후에는 내용을 변경할 수 없습니다. 파이썬은 문자열 자르기, 붙이기, 포맷팅 등 문자열 작업을 위한 몇 가지 기본 내장 메서드를 제공합니다. 이 중, 문자열 분할을 하는 방법에 중점을 두어 진행해보겠습니다.

우선, 문자열의 공백을 포함한 모든 문자 한글자씩 끊어서 배열로 만들기 위해서는 list()메서드를 사용합니다.

text = "파이썬은 강력한 언어입니다"
text_list = list(text)
# 결과: ['파', '이', '썬', '은', ' ', '강', '력', '한', ' ', '언', '어', '입', '니', '다']
 
# 만약 공백 없이 리스트를 만들고 싶다면, 먼저 replace() 메서드로 공백을 제거하고 list() 메서드를 실행합니다.
 
text_list = list(text.replace(' ', '')
# 결과:  ['파', '이', '썬', '은', '강', '력', '한', '언', '어', '입', '니', '다']

2. split() 메서드로 문자열 자르기

split()메서드는 파이썬에서 문자열을 자르는 가장 일반적이고 간단한 방법입니다. 기본적으로 공백 (whitespace character - 공백 문자) 을 기준으로 문자열을 분할하고 하위 문자열 (substrings) 리스트를 반환합니다.

split()을 사용하는 예제입니다.

text = "파이썬은 강력한 언어입니다"
words = text.split()
 
print(words)

예제를 실행한 결과는 다음과 같습니다.

['파이썬은', '강력한', '언어입니다']

문자열을 자르는 기준 문자를 split()메서드에 인자로 제공해서, 원하는대로 문자열을 자를 수도 있습니다.

text = "파이썬은-강력한-언어입니다"
words = text.split("-")
 
print(words)

예제를 실행한 결과는 다음과 같습니다.

['파이썬은', '강력한', '언어입니다']

split()메서드는 maxsplit 매개변수를 가지고 있습니다. maxsplit 매개변수는 최대로 자를 수 있는 횟수를 지정합니다. 앞에서부터 최대 횟수만큼 문자열을 자른 후 남은 문자열은 그대로 마지막 요소로 반환됩니다.

text = "파이썬은 강력한 언어이기 때문에 사용하기 편리합니다"
words = text.split(" ", maxsplit=2)
 
print(words)

예제를 실행한 결과는 다음과 같습니다.

['파이썬은', '강력한', '언어이기 때문에 사용하기 편리합니다']

3. splitlines() 메서드로 줄바꿈 기준 한 줄씩 자르기

여러 줄로 된 문자열을 다룰 때는 splitlines()메서드를 사용합니다. splitlines()메서드는 여러 줄로 된 문자열을 한 줄씩 분할해서 각 문장으로 이루어진 리스트를 반환합니다. 기본적으로 이 메서드는 문자열을 개행 문자(\n) 기준으로 분할합니다.

splitlines()메서드를 사용하는 예제입니다:

multiline_text = "파이썬은 강력한 언어이며\n배우기 쉽기 때문에\n많은 개발자들이 사용합니다"
lines = multiline_text.splitlines()
 
print(lines)

예제를 실행한 결과는 다음과 같습니다.

['파이썬은 강력한 언어이며', '배우기 쉽기 때문에', '많은 개발자들이 사용합니다']

또한 splitlines()메서드는 선택적으로 keepends 매개변수를 사용할 수 있습니다., 이 매개변수를 True로 설정하면 반환되는 리스트의 각 줄 마지막에 개행 문자(\n)를 유지합니다:

multiline_text = "파이썬은 강력한 언어이며\n배우기 쉽기 때문에\n많은 개발자들이 사용합니다"
lines = multiline_text.splitlines(keepends=True)
 
print(lines)

예제를 실행한 결과는 다음과 같습니다.

['파이썬은 강력한 언어이며\n', '배우기 쉽기 때문에\n', '많은 개발자들이 사용합니다']

4. re.split() 정규 표현식 사용해서 구분 기호 여러개로 문자열 자르기

경우에 따라 여러 구분 기호나 패턴을 기반으로 문자열을 분할하는 고급 분할 기능이 필요할 수 있습니다. 파이썬의 re 모듈은 정규 표현식을 사용하여 문자열을 자를 수 있는 강력한 split()함수를 제공합니다.

다음은 구분 기호 여러 개를 사용하여 문자열을 분할하는 예제입니다:

import re
 
text = "파이썬은 강력한 언어이며 배우기 쉽습니다."
words = re.split(r"[;:,\s]\s*", text)
 
print(words)

예제를 실행한 결과는 다음과 같습니다.

['파이썬은', '강력한','언어이며', '배우기', '쉽습니다.']

위 예제에서 사용한 정규표현식 패턴은 r"[;:,\s]\s*"입니다. r"[;:,\s]\s*"의 의미는 세미콜론(;), 콜론(:), 쉼표(,) 또는 공백 문자(\s)로 시작하고 그 뒤에 0개 이상의 공백 문자(\s*)가 오는 모든 패턴을 찾아냅니다. re.split()함수는 이 패턴이 발생할 때마다 문자열을 분할합니다.

re.split()을 사용하는 또 다른 방법은 특정 구분 기호가 아닌 패턴을 기반으로 문자열을 분할하는 것입니다:

import re
 
text = "파이썬은123강력한456언어입니다."
words = re.split(r"\d+", text)
 
print(words)

예제를 실행한 결과는 다음과 같습니다.

['파이썬은', '강력한', '언어입니다.']

위 예제에는 정규표현식 패턴(r"\d+")은 하나 이상의 숫자와 일치한다는 의미를 가집니다. re.split() 함수는 이 패턴이 발생할 때마다 문자열을 자릅니다.

5. 파이썬에서 문자열을 분할하는 모범 사례

  • 간단한 문자열을 자르는 경우에는, 파이썬에 내장된 split()메서드를 사용합니다. split()메서드는 대부분의 문자열 분할 작업에서 효율적이고 사용하기 쉽습니다. 특히 단일한 구분 기호에 따라 문자열을 자르는 경우 최선의 해결 방법입니다.
  • 여러 줄 문자열을 자르는 경우에는, splitlines()메서드를 사용합니다. splitlines()메서드는 여러 줄 문자열을 한 줄씩 분할해서 줄줄이 요소로 갖는 리스트를 반환하는 가장 효율적이고 편리한 방법입니다.
  • 고급 분할을 위해 re.split()과 함께 정규표현식을 사용합니다. 여러 구분 기호, 패턴 또는 복잡한 규칙을 기반으로 문자열을 분할해야 하는 경우, re 모듈의 re.split()함수는 강력하고 유연한 분할 기능을 제공합니다.
  • 다만, 정규식은 강력하지만 내장 메서드보다 느릴 수도 있습니다. 가능하면 기본 제공 메서드를 사용하고, 정규식은 필요한 경우에만 사용하는 것을 추천합니다.

6. 정리

이번 포스팅에서는 파이썬 내장 메서드인 split()splitlines()메서드 그리고 re 모듈의 re.split()함수를 포함하여, 파이썬에서 문자열을 분할하는 다양한 기법을 살펴봤습니다. 이러한 기술을 이해하고 숙달하면 파이썬에서 텍스트 기반 데이터를 효율적으로 조작하고 처리할 수 있습니다.

이처럼 강력한 문자열 조작 도구를 원하는대로 사용하면 간단한 텍스트 처리부터 복잡한 데이터 추출 및 변환에 이르기까지, 다양한 작업을 처리하는 데 이 포스팅이 도움이 되길 바랍니다[.

copyright for Python string split

© 2023 All rights reserved.