Python Basic : split (문자열 나누기, 문자열을 나눠서 list로 만들기, 문자열 list 변환)
split method는 문자열에 적용해서 문자열을 특정 텍스트를 기준으로 나눠 list로 만들어줍니다.
Syntax
string.split(separator, maxsplit)
사용법은 위와 같습니다.
어떤 string에 split method를 적용할 수 있습니다.
- separator
split method는 parameter로 separator를 받습니다.
separator가 주어지지 않는다면 공백(' ')이 기본값으로 간주됩니다.
- maxsplit
최대 몇개 separator를 감지할지를 의미합니다.
maxsplit의 기본값은 -1이며, -1은 발견되는 모든 separator에 대해서 문자열을 나누라는 의미입니다.
str_test = 'Apple Banana Peach Grape'
list_test = str_test.split()
print(list_test)
-- Result
['Apple', 'Banana', 'Peach', 'Grape']
str_test에 split을 적용했습니다.
split의 인자로 아무것도 주어지지 않았으므로 기본값인 공백으로 문자열을 나눕니다.
str_test = 'Apple, Banana, Peach Grape'
list_test = str_test.split(', ')
print(list_test)
-- Result
['Apple', 'Banana', 'Peach Grape']
이번에는 ', '를 기준으로 str_test를 나눴습니다.
str_test에는 ', '라는 문자가 총 2개가 있으니 이걸 기준으로 총 3개의 부분으로 나눠진 것을 볼 수 있습니다.
str_test = 'Apple,Banana,Peach Grape,Watermelon'
list_test = str_test.split(',', 2)
print(list_test)
-- Result
['Apple', 'Banana', 'Peach Grape,Watermelon']
위 예시는 split에 maxsplit 값을 2로 설정한 코드입니다.
split의 separator는 콤마(,)로 설정되었습니다.
str_test에서 존재하는 콤마(,)는 총 3개입니다.
따라서 maxsplit 값이 별도로 주어지지 않았다면 ['Apple', 'Banana', 'Peach Grape', 'Watermelon']이 return될 것입니다.
근데 maxsplit값을 2로 설정했기 때문에 str_test에서 가장 왼쪽부터 콤마(,)를 감지하기 시작하여 두 번째로 감지되는 콤마까지만 split을 적용합니다.
- str_test = 'Apple,Banana,Peach Grape,Watermelon'
따라서 결과를 보면 Apple 뒤에 있는 첫 번째 콤마와 Banana 뒤에 있는 두 번째 콤마까지만 split이 적용되고 Grape 뒤에 있는 콤마에는 split이 적용되지 않았습니다.
- 추가 팁
만약에 world란 글자를 알파벳 하나하나 나눠서 list로 만들고싶으면 어떻게 해야할까요?
str_test = 'world'
list_test = str_test.split('')
print(list_test)
-- Result
ValueError: empty separator
생각나는건 위처럼 split method에 ''를 넣어서 그냥 아무것도 아닌 비어있는 값을 separator로 하여 글자를 분리하라고 적으면 될 것 같습니다.
하지만 위 코드의 결과를 보면 에러가 발생합니다.
split method는 위처럼 아무것도 없는 empty separator는 이용할 수 없습니다.
이럴 땐 아주 간단한 방법이 있습니다.
list method를 사용하는겁니다.
아래 코드를 보시죠.
str_test = 'world'
list_test = list(str_test)
print(list_test)
-- Result
['w', 'o', 'r', 'l', 'd']
list method에 텍스트를 담기만 했더니 텍스트가 글자단위로 다 쪼개져서 list가 되었습니다.
split method를 사용할 필요도 없죠.
이런식으로 텍스트를 글자별로 분리시킬 때에는 아주 간단하게 list method를 사용할 수 있습니다.