본문 바로가기

라이브러리

[파이썬] join() 함수로 문자열 합치기

join() 함수는 문자열 메서드로, 문자열 리스트 (list of strings) 또는 이와 유사한 반복 가능한(iterable) 객체를 인자로 받아 이들을 연결하여 하나의 문자열(string)로 만들어줍니다.

 

1. 예제코드


다음은 join() 함수를 사용하여 문자열 리스트를 연결하는 예시 코드입니다:

 

fruits = ['apple', 'banana', 'cherry']
result = ', '.join(fruits)
print(result) # apple, banana, cherry


위 코드에서 join() 함수는 , (쉼표와 공백)를 구분자(separator)로 사용하여 fruits 리스트의 요소들을 연결하여 하나의 문자열로 만듭니다. 연결된 문자열은 result 변수에 저장되어 출력됩니다.

join() 함수는 문자열뿐만 아니라, 다른 반복 가능한(iterable) 객체도 인자로 받을 수 있습니다. 이때, 반복 가능한 객체의 각 요소들은 문자열로 형변환되어 연결됩니다. 예를 들어, 다음과 같은 코드를 실행하면:

 

numbers = [1, 2, 3, 4, 5]
result = '-'.join(numbers)
print(result)


아래와 같은 에러가 발생합니다:

 

TypeError: sequence item 0: expected str instance, int found


위 에러는 join() 함수가 인자로 받은 numbers 리스트의 요소들을 문자열로 형변환할 수 없기 때문에 발생합니다. 따라서 위 코드를 수정하여 요소들을 먼저 문자열로 변환한 뒤 join() 함수를 사용해야 합니다:

 

numbers = [1, 2, 3, 4, 5]
result = '-'.join(str(number) for number in numbers)
print(result) # 1-2-3-4-5


위 코드에서 join() 함수는 -를 구분자로 사용하여 numbers 리스트의 각 요소들을 문자열로 변환한 뒤, 이들을 연결하여 하나의 문자열로 만듭니다.

 

2. 주의사항

 

  • 문자열을 연결하는 용도로만 사용해야 합니다. 다른 용도로 사용하면 예기치 않은 결과가 발생할 수 있습니다.
  • 인자로 받은 반복 가능한(iterable) 객체의 요소들을 모두 문자열로 형변환한 뒤 연결합니다. 따라서, 인자로 받은 객체의 요소 중 문자열로 형변환할 수 없는 요소가 있다면 TypeError가 발생합니다.
  • 인자로 받은 객체가 비어있는(empty) 경우에도 동작합니다. 이 경우, 빈 문자열(empty string)이 반환됩니다.
  • 문자열을 연결할 때 구분자(separator)를 사용합니다. 이 구분자는 첫 번째 요소의 앞과 마지막 요소의 뒤에는 추가되지 않습니다. 예를 들어, ', '.join(['apple', 'banana', 'cherry'])의 결과는 'apple, banana, cherry'입니다. 따라서, 구분자가 맨 앞이나 맨 뒤에 오는 것을 방지하기 위해 구분자를 추가로 처리해줘야 할 때가 있습니다.
  • 문자열을 연결할 때 매우 효율적인 방식으로 동작합니다. 따라서, 문자열을 반복적으로 연결해야 할 때에는 + 연산자보다 join() 함수를 사용하는 것이 좋습니다.
  • 시간복잡도는 O(n)입니다. 따라서, 대용량 데이터를 처리할 때에는 join() 함수를 사용하는 것이 좋습니다.
  • 문자열뿐만 아니라, 리스트, 튜플, 세트(set), 딕셔너리(dict) 등의 반복 가능한(iterable) 객체에도 사용할 수 있습니다. 하지만, 딕셔너리(dict)의 경우에는 키(key)만 연결됩니다.