규도자 개발 블로그

파이썬3(python3)에서 문자열 자르는 함수. split()과 split(' ')의 차이. 본문

Python/Python

파이썬3(python3)에서 문자열 자르는 함수. split()과 split(' ')의 차이.

규도자 (gyudoza) 2020. 4. 3. 15:47

파이썬3(python3)에서 문자열 자르는 함수. split()과 split(' ')의 차이.

일단 split()함수는 괄호에 들어오는 문자를 기준으로 문자열을 리스트로 잘라 리턴하는 함수이다. 따옴표가 있냐 없냐의 차이는 간단하게 표현할 수 있다. split()은 모든 공백을 한번에 처리한다. split(' ')은 이후 공백을 전부 따로따로 처리한다. 간단한 예를 하나 보자.

print("a bb  ccc   dddd    ".split())
print("a bb  ccc   dddd    ".split(' '))

a뒤는 스페이스 하나. b 뒤엔 두개. c뒤엔 세개. d뒤엔 네개가 있다. 콘솔창에 출력되는 결과는 이렇다.

['a', 'bb', 'ccc', 'dddd']
['a', 'bb', '', 'ccc', '', '', 'dddd', '', '', '', '']

split()은 공백이 몇 개든 주어진 모든 공백을 하나로 처리하며 split(' ')은 문자열 사이사이에 있는 공백만 배열의 분할점으로 이용하되 공백이 연속하여 나오면 일반 문자 다음에 오는 공백을 제외한 나머지 공백 각각을 하나의 리스트 요소로 처리한다. 그리고! 마지막에 분할할 요소가 없다면 남은 공백들을 전부 하나의 요소로 처리한다.

 

split()split(' ')이것은 공백이 아닌 tab에서도 다르게 작동한다.

print("a	aa		aaa	".split())
print("a	aa		aaa	".split(' '))

이번에도 마찬가지로 a뒤엔 탭 하나, aa뒤엔 탭 두개, aaa뒤엔 탭 세개를 입력하였다. 결과값은 아래와 같다.

['a', 'aa', 'aaa']
['a\taa\t\taaa\t\t\t']

split(' ')에서는 분할점을 스페이스로 명확하게 정의했기 때문에 해당 입력에 대해서만 분할처리하지만 split()에서는 분할점을 주지 않았기 때문에 다른 공백에 대해서도 전부 하나로 퉁쳐버리는 식으로 작동한다. 이것은 이스케이프를 활용한 뉴라인(\n)등에서도 똑같이 작용한다.

 

Comments