Python, 쉼표로 구분된 문자열을 분할하고 공백을 제거하고 목록으로 변환하도록 분할

사업

파이썬에서 쉼표로 구분된 문자열을 목록으로 분할할 때 사이에 공백이 없으면 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 루프 대신 목록 이해 표기법을 사용하는 것이 현명합니다.

여기서는 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