파이썬은 모든 입력을 문자열(string)로 받기 때문에 문자열을 나누거나 합치는 함수를 알아두면 편리하다.
함수 형태
str = input('문자열을 입력하시오: ') # string 형식으로 입력받기
s1 = str.split() # 기본적인 split함수: 공백을 기준으로 나눔
s2 = str.split('/') # 구분자 지정: 구분자 기준으로 나눔 'home/user/user' -> 'home', 'user', 'user'
s3 = str.split('.') # 다른 형태의 구분자
s4 = str.split(',', maxsplit=3) # 구분자와 최대로 나눌 횟수 지정
s5 = str.split(',', 3) # 파라미터명 생략
기본적인 형태는 위와 같다. 가장 정확한 형태는
문자열.split(sep='구분자', maxsplit=분할횟수)
이며 sep과 maxsplit은 생략가능하다. 주의할 점은 sep없이 maxsplit 파라미터명을 생략하여 사용할 순 없다.
문자열.split(3) # 불가능
문자열.split('.', 3) # 가능
문자열.split(maxsplit=3) # 가능
언뜻 보면 복잡해보이지만, 파이썬 클래스 생성자(initializer)나 함수 파라미터 초기값 설정 등을 떠올려보면 그 이유는 생각보다 간단함을 알 수 있다.
split() 예제
str = 'a b c d'
print(str.split()) # ['a', 'b', 'c', 'd']
str2 = 'a,b,c,d'
print(str2.split()) # ['a', 'b', 'c', 'd']
str3 = 'a, b, c, d'
print(str3.split()) # ['a,', 'b,', 'c,', 'd']
print(str3.split(sep=',')) # ['a', ' b', ' c', ' d']
str4 = 'a.bb.ccc.dddd.eeeee'
print(str4.split('.', maxsplit=3)) #['a', 'bb', 'ccc', 'dddd.eeeee']
print(str4.split(sep='.', maxsplit=3)) #['a', 'bb', 'ccc', 'dddd.eeeee']
print(str4.split('.', 3)) #['a', 'bb', 'ccc', 'dddd.eeeee']
이처럼 파라미터를 표시하여 정확하게 나타낼 수도 있고, 생략해서 사용할 수도 있다. 가장 중요한 점은 초기 데이터의 형태이다.
str3처럼 콤마 뿐만 아니라 띄어쓰기도 포함되어 있다면 함수의 구분자를 주의해서 사용해야 한다.
그리고 문자열을 나눈 이후의 데이터 형태는 문자열을 원소로 가지는 리스트이다. 이를 이용하여 응용하면 코딩 문제를 풀 때 쉽게 데이터를 가공할 수 있다.
예를 들어 세 개의 변수가 띄어쓰기로 구분되어 차례로 입력되어진다고 하면 다음처럼 입력을 받을 수 있다.
a, b, c = input().split()
추가
파이썬 문자열 함수 split()의 파라미터 sep의 기본값은 None이며 이때는 띄어쓰기와 줄구분자(엔터)를 기준으로 나누고,
maxsplit의 기본값은 -1로 제한없이 문자열을 split한다. (무한을 뜻하는 값으로 주로 -1을 사용한다)