Python에서 문자열 연결 및 결합: + 연산자, 결합 함수 등

사업

다음은 파이썬에서 문자열 str을 연결하고 결합하는 방법에 대한 설명입니다.

  • 여러 문자열 연결 및 병합:+,+=운영자
  • 숫자와 문자열 연결 및 결합:+,+=운영자,str(),format(),f-문자열
  • 문자열 목록(배열)을 단일 문자열로 연결 및 결합:join()
  • 숫자 목록(배열)을 단일 문자열로 연결 및 결합:join(),str()

여러 문자열 연결 및 병합:+,+=운영자

연결:+운영자

++ 연산자는 다음 문자열 리터럴과 문자열 변수를 연결하는 데 사용할 수 있습니다.

  • …’
  • “…”
s = 'aaa' + 'bbb' + 'ccc'
print(s)
# aaabbbccc

s1 = 'aaa'
s2 = 'bbb'
s3 = 'ccc'

s = s1 + s2 + s3
print(s)
# aaabbbccc

s = s1 + s2 + s3 + 'ddd'
print(s)
# aaabbbcccddd

연결:+=운영자

누적 할당 연산자인 += 연산자도 사용할 수 있습니다. 왼쪽의 문자열 변수는 오른쪽의 문자열과 연결되어 할당되고 업데이트됩니다.

s1 += s2
print(s1)
# aaabbb

문자열 변수 끝에 문자열을 추가하려면 += 연산자를 사용하여 문자열 변수와 문자열 리터럴(또는 다른 문자열 변수)을 처리하기만 하면 됩니다.

s = 'aaa'

s += 'xxx'
print(s)
# aaaxxx

문자열 리터럴의 연속 연결

단순히 문자열 리터럴을 나란히 작성하면 문자열 리터럴이 연결됩니다.

s = 'aaa''bbb''ccc'
print(s)
# aaabbbccc

두 줄 사이에 공백을 두거나 백슬래시 줄 바꿈(연속으로 간주)을 사용할 수 있습니다.

s = 'aaa'  'bbb'    'ccc'
print(s)
# aaabbbccc

s = 'aaa'\
    'bbb'\
    'ccc'
print(s)
# aaabbbccc

이것을 사용하여 코드의 여러 줄에 긴 문자열을 작성하는 기술이 있습니다.

이 쓰기 방법은 문자열 변수에 사용할 수 없습니다.

# s = s1 s2 s3
# SyntaxError: invalid syntax

숫자 및 문자열 연결/연결:+,+=운영자,str(),format(),f-문자열

다른 유형의 + 연산은 오류를 발생시킵니다.

s1 = 'aaa'
s2 = 'bbb'

i = 100
f = 0.25

# s = s1 + i
# TypeError: must be str, not int

숫자 값(예: 정수 유형 int 또는 부동 소수점 유형 float)을 문자열과 연결하려면 str()을 사용하여 숫자 값을 문자열 유형으로 변환한 다음 + 연산자(또는 += 연산자)를 사용하여 연결합니다. ).

s = s1 + '_' + str(i) + '_' + s2 + '_' + str(f)
print(s)
# aaa_100_bbb_0.25

0 채우기 또는 소수 자릿수와 같은 숫자 형식을 변환하려면 format() 함수 또는 문자열 메서드 format()을 사용합니다.

s = s1 + '_' + format(i, '05') + '_' + s2 + '_' + format(f, '.5f')
print(s)
# aaa_00100_bbb_0.25000

s = '{}_{:05}_{}_{:.5f}'.format(s1, i, s2, f)
print(s)
# aaa_00100_bbb_0.25000

물론 형식을 지정하지 않고 변수 값을 문자열에 직접 포함하는 것도 가능합니다. 이것은 + 연산자를 사용하는 것보다 작성하기 쉽습니다.

s = '{}_{}_{}_{}'.format(s1, i, s2, f)
print(s)
# aaa_100_bbb_0.25

형식을 지정하는 방법에 대한 자세한 내용은 다음 문서를 참조하십시오.

Python 3.6 이후로 f-문자열(f-문자열)이라는 메커니즘도 도입되었으며, 이는 format()보다 작성하기 훨씬 쉽습니다.

s = f'{s1}_{i:05}_{s2}_{f:.5f}'
print(s)
# aaa_00100_bbb_0.25000

s = f'{s1}_{i}_{s2}_{f}'
print(s)
# aaa_100_bbb_0.25

문자열의 목록(배열) 연결 및 결합:join()

문자열 메서드 join()을 사용하여 문자열 목록을 단일 문자열로 연결할 수 있습니다.

작성하는 방법은 다음과 같습니다.

'String to be inserted between'.join([List of strings to be concatenated])

사이에 삽입할 문자열’을 사용하여 join() 메서드를 호출하고 [연결할 문자열 목록]을 인수로 전달합니다.

빈 문자열을 사용하면 [연결할 문자열 목록]을 단순히 연결하고, 쉼표를 사용하면 문자열을 쉼표로 구분하고, 개행 문자를 사용하면 각 문자열 요소를 개행합니다.

l = ['aaa', 'bbb', 'ccc']

s = ''.join(l)
print(s)
# aaabbbccc

s = ','.join(l)
print(s)
# aaa,bbb,ccc

s = '-'.join(l)
print(s)
# aaa-bbb-ccc

s = '\n'.join(l)
print(s)
# aaa
# bbb
# ccc

여기에는 목록의 예만 나와 있지만 튜플과 같은 다른 반복 가능한 객체도 join()에 대한 인수로 지정할 수 있습니다.

join()과 달리 split()은 특정 구분 기호로 구분된 문자열을 분할하고 목록으로 가져오는 데 사용됩니다.

숫자 목록(배열)을 문자열로 연결 및 결합:join(),str()

join()에 대한 인수가 요소가 문자열이 아닌 목록이면 오류가 발생합니다.

l = [0, 1, 2]

# s = '-'.join(l)
# TypeError: sequence item 0: expected str instance, int found

숫자 목록을 단일 문자열로 연결하려면 목록 이해 표기법의 각 요소에 str() 함수를 적용하여 숫자를 문자열로 변환한 다음 join()으로 결합하십시오.

s = '-'.join([str(n) for n in l])
print(s)
# 0-1-2

목록 이해의 생성기 버전인 생성기 식으로 작성할 수도 있습니다. 생성기 표현식은 괄호로 묶여 있지만 생성기 표현식이 함수나 메서드에 대한 유일한 인수인 경우 괄호를 생략할 수 있습니다.

s = '-'.join((str(n) for n in l))
print(s)
# 0-1-2

s = '-'.join(str(n) for n in l)
print(s)
# 0-1-2

생성기 표현식은 일반적으로 목록 이해보다 적은 메모리를 사용하는 이점이 있지만 join()이 내부 처리에서 생성기를 목록으로 변환하기 때문에 생성기 표현식을 사용하는 데 특별한 이점은 없습니다. 사실 처음부터 목록 이해를 사용하는 것이 약간 더 빠릅니다.

목록 이해 및 생성기 표현식에 대한 자세한 내용은 다음 문서를 참조하십시오.