본문 바로가기
Python

[Python] 리스트(배열) 문자열로 변환하기 (Python list to string)

by A6K 2021. 5. 9.

문자열 데이터를 다루는 알고리즘을 파이썬으로 작성할 때, 문자열을 이루고 있는 문자들을 배열로 만들어 처리한 다음 다시 문자열로 만드는 동작을 자주사용하게 된다. 일반적으로 문자열의 문자들을 스택이나 큐 등의 자료구조에 넣었다가 빼는 동작을 하고 다시 문자열로 합치는 동작이다.

파이썬에서 리스트에 있는 모든 요소들을 하나의 문자열로 변환하는 방법을 정리해보겠다.

반복문

가장 간단한 방법은 리스트에 포함되어 있는 엘리먼트들을 순회하면서 결과 문자열에 붙여나가는 것이다.

str_list = ['Convert', 'list', 'into', 'string']

result = ""
for word in str_list:
  result += word + " "

print(result)

# Convert list into string

별다른 설명이 없어도 이 코드가 어떻게 동작하는지는 이해할 수 있을 것이다.

String.join() 함수

파이썬에서 문자열 데이터를 다루는 String 클래스는 'join()' 함수를 제공한다. join() 함수를 이용해서 리스트에 들어있는 문자열 데이터를 하나의 문자열로 변환할 수 있다. 예를 들어 다음 코드를 보자.

array = ['H', 'E', 'L', 'L', 'O', ' ', 'W', 'O', 'R', 'L', 'D']

print(array)

print(''.join(array)) # array Element들을 공백없이 붙임
print(' '.join(array)) # array Element들을 공백을 이용해서 구분
print('-'.join(array)) # array Element들을 '-' 문자를 이용해서 구분
print('\n'.join(array)) # 한줄에 하나씩 출력

array라는 이름의 배열에 "HELLO WORLD"를 구성하고 있는 문자들이 들어있다. 이 코드를 실행해보면 다음과 같은 결과를 출력한다.

join 메서드 앞에 있는 캐릭터를 이용해서 리스트에 있는 각각의 캐릭터들을 연결시켜 하나의 문자열로 만들어 준다. 만일 join 메서드에 사용한 리스트에 캐릭터 타입이 아닌 객체가 속해있으면 다음과 같은 TypeError가 발생한다.

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

문자열이 아닌 정수형 값이 섞여 있다는 에러다.

숫자가 섞여 있는 경우

리스트에 문자열 데이터와 함께 숫자가 섞여 있는 경우가 있다. 자연스럽게 타입변환이 일어나서 문자로 붙여주면 좋겠지만 아쉽게도 타입 에러가 발생한다.

str_list = ['Convert', 'list', 2, 'string']
result = " ".join(str_list)

print(result)

# Traceback (most recent call last):
#   File "./test.py", line 2, in <module>
#    result = " ".join(str_list)
# TypeError: sequence item 2: expected str instance, int found

이 경우 리스트에 있는 모든 엘리먼트들을 문자열 타입으로 변환해주는 제너레이터를 사용해주면 된다. 즉, 위 코드를 다음과 같이 바꾸면 된다.

str_list = ['Convert', 'list', 2, 'string']
result = " ".join(str(s) for s in str_list)

print(result)

# Convert list 2 string

str(s) for s in str_list 는 str_list에 있는 모든 엘리먼트들에 대해 str(s)를 호출해서 문자열의 리스트로 만들어주는 list comprehension이다. 이를 통해 만들어진 문자열들을 join() 함수로 연결시켜주면 의도한대로 정상동작한다.

혹은 map() 함수를 이용해서 동일한 작업을 할 수 있다.

str_list = ['Convert', 'list', 2, 'string']
result = " ".join(map(str, str_list)

print(result)

# Convert list 2 string

 

파이썬 스크립트 작성에 도움되는 글 모음

파이썬으로 프로그램을 작성할 때 도움되는 글들을 모아본다. Python 문법 Python 모듈

hbase.tistory.com

 

댓글