파이썬에서 쉼표로 구분된 문자열을 목록으로 분할할 때 사이에 공백이 없으면 split()만 작동합니다. 공백이 있는 경우 strip()과 결합하여 추가 공백을 제거하는 것이 유용합니다. 또한 목록 이해 표기법을 사용하는 것이 현명한 작성 방법입니다.
이 섹션에서는 먼저 다음을 설명합니다.
- 지정된 구분 기호로 문자열을 분할하고 목록으로 반환
split()
- 문자열의 시작과 끝에서 추가 문자를 제거합니다.
strip()
- 목록 요소에 기능과 메소드를 적용하기 위한 목록 이해 표기법.
또한 아래와 같이 공백을 제거하여 공백과 쉼표로 구분된 문자열 목록을 만드는 방법도 보여줍니다.one, two, three'
또한 다음과 같이 논의할 것입니다.
- 숫자 목록으로 얻는 방법
- 조인()을 사용하여 목록에 조인하고 다시 문자열로 만드는 방법
split():지정된 구분 기호로 문자열을 분할하고 목록으로 반환
문자열에 대해 split() 메서드를 사용하면 지정된 구분 기호로 문자열을 분할하고 목록(배열)으로 가져올 수 있습니다. 지정된 구분 기호는 다음 인수로 지정할 수 있습니다.sep
인수 sep가 생략되고 구분 기호가 지정되지 않으면 문자열을 공백으로 분할하고 목록을 반환합니다. 연속된 공백과 탭도 목록을 분할하므로 탭으로 구분된 문자열 목록을 만들고 싶다면 인수 없이 split()을 사용할 수 있습니다.
s = 'one two three' l = s.split() print(l) # ['one', 'two', 'three'] s = 'one two three' l = s.split() print(l) # ['one', 'two', 'three'] s = 'one\ttwo\tthree' l = s.split() print(l) # ['one', 'two', 'three']
sep 인수에 구분 기호가 지정되면 해당 문자열로 목록을 나누고 목록을 반환합니다.
s = 'one::two::three' l = s.split('::') print(l) # ['one', 'two', 'three']
쉼표로 구분된 문자열의 경우 여분의 공백이 없으면 문제가 없으나 쉼표 + 공백으로 구분된 문자열의 구분자로 쉼표를 사용하여 split()을 실행하면 종료됩니다. 시작 부분에 공백이 남아 있는 문자열 목록을 표시합니다.
s = 'one,two,three' l = s.split(',') print(l) # ['one', 'two', 'three'] s = 'one, two, three' l = s.split(',') print(l) # ['one', ' two', ' three']
다음과 같이 쉼표 + 공백을 구분자로 사용할 수 있지만 원래 문자열의 공백 수가 다를 경우 작동하지 않습니다., '
s = 'one, two, three' l = s.split(', ') print(l) # ['one', 'two', 'three'] s = 'one, two, three' l = s.split(', ') print(l) # ['one', 'two', ' three']
다음에 설명할 string 메서드 strip()은 두 개의 공백을 처리하는 데 사용할 수 있습니다.
strip():문자열의 시작과 끝에서 추가 문자를 제거합니다.
strip()은 문자열의 시작과 끝에서 여분의 문자를 제거하는 방법입니다.
인수가 생략되면 공백 문자가 제거된 새 문자열이 반환됩니다. 원래 문자열 자체는 변경되지 않습니다.
s = ' one ' print(s.strip()) # one print(s) # one
문자열이 인수로 지정되면 문자열에 포함된 문자가 제거됩니다.
s = '-+-one-+-' print(s.strip('-+')) # one
이 경우 공백은 제거되지 않습니다. 따라서 공백도 제거하고 싶다면 아래와 같이 공백이 포함된 문자열을 인자로 전달하면 된다.-+ '
s = '-+- one -+-' print(s.strip('-+')) # one s = '-+- one -+-' print(s.strip('-+ ')) # one
strip()은 양쪽 끝을 처리하지만 다음 함수도 사용할 수 있습니다.
lstrip()
:시작만 처리rstrip()
:행의 끝만 처리하십시오.
목록 이해 표기법: 목록 요소에 함수 및 메서드 적용
목록의 요소에 함수나 메서드를 적용하려는 경우 마지막에 목록을 얻으려면 for 루프 대신 목록 이해 표기법을 사용하는 것이 현명합니다.
- 관련 기사:Python 목록 이해 표기법 사용
여기서는 split()으로 문자열을 분할하여 얻은 목록에 strip()을 적용합니다. 공백을 포함하는 쉼표로 구분된 문자열의 추가 공백을 제거하여 목록을 만들 수 있습니다.
s = 'one, two, three' l = [x.strip() for x in s.split(',')] print(l) # ['one', 'two', 'three']
이를 빈 문자열에 적용하면 하나의 빈 문자열을 요소로 포함하는 목록을 얻을 수 있습니다.
s = '' l = [x.strip() for x in s.split(',')] print(l) print(len(l)) # [''] # 1
빈 문자열에 대한 빈 목록을 얻으려면 목록 이해 표기법에서 조건 분기를 설정할 수 있습니다.
s = '' l = [x.strip() for x in s.split(',') if not s == ''] print(l) print(len(l)) # [] # 0
one, , three'
또한 위에서 설명한 대로 쉼표로 구분된 요소가 누락된 경우 첫 번째 방법은 이를 빈 문자열 요소로 나열합니다.
s = 'one, , three' l = [x.strip() for x in s.split(',')] print(l) print(len(l)) # ['one', '', 'three'] # 3
누락된 부분을 무시하고 싶다면 목록 이해 표기법에서 조건 분기를 설정할 수 있습니다.
s = 'one, ,three' l = [x.strip() for x in s.split(',') if not x.strip() == ''] print(l) print(len(l)) # ['one', 'three'] # 2
숫자 목록으로 가져오기
쉼표로 구분된 숫자 문자열을 문자열 대신 숫자 목록으로 가져오려면 int() 또는 float()를 적용하여 목록 이해 표기법에서 문자열을 숫자로 변환합니다.
s = '1, 2, 3, 4' l = [x.strip() for x in s.split(',')] print(l) print(type(l[0])) # ['1', '2', '3', '4'] # <class 'str'> s = '1, 2, 3, 4' l = [int(x.strip()) for x in s.split(',')] print(l) print(type(l[0])) # [1, 2, 3, 4] # <class 'int'>
join():목록을 병합하고 문자열로 가져옵니다.
반대로 목록을 결합하고 특정 구분 기호로 구분된 문자열을 가져오려면 join() 메서드를 사용합니다.
실수하기 쉽지만 join()은 목록 메서드가 아니라 문자열 메서드입니다. 목록은 인수로 지정됩니다.
s = 'one, two, three' l = [x.strip() for x in s.split(',')] print(l) # ['one', 'two', 'three'] print(','.join(l)) # one,two,three print('::'.join(l)) # one::two::three
다음과 같이 한 줄로 작성할 수 있습니다.
s = 'one, two, three' s_new = '-'.join([x.strip() for x in s.split(',')]) print(s_new) # one-two-three
고정 구분 기호를 변경하려는 경우 replace() 메서드로 교체하는 것이 더 쉽습니다.
s = 'one,two,three' s_new = s.replace(',', '+') print(s_new) # one+two+three