Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

파이썬(Python)에서 문자열을 리스트로 변환하고 하나로 병합하는 방법

개요

애플리케이션을 개발하다 보면 문자열 형태로 저장된 데이터를 실제로 조작할 수 있는 가변(mutable) 자료 구조, 즉 리스트(list)로 변환해야 하는 상황이 자주 발생합니다. 특히 여러 개의 문자열이 각각 리스트나 튜플의 표현식을 담고 있을 때, 이를 하나의 리스트로 병합하는 방법을 알아두면 매우 유용합니다.

파이썬에서는 ast.literal_eval() 또는 eval() 함수를 활용해 문자열을 실제 파이썬 객체로 변환할 수 있으며, 이를 통해 여러 문자열을 손쉽게 하나의 리스트로 합칠 수 있습니다.

예제 코드

# ast 라이브러리 임포트
import ast

# 문자열 초기화
str1 = "'Python', 'for', 'fun'"
str2 = "'vishesh', 'ved'"
str3 = "'Programmer'"

# 빈 리스트 초기화
lst = []

# 하나의 리스트로 병합
for x in (str1, str2, str3):
    lst.extend(ast.literal_eval(x))

# 결과 출력
print(lst)

# eval 사용 예제
# 리스트 형태의 문자열 초기화
str1 = "['python', 'for', 'fun']"
str2 = "['vishesh', 'ved']"
str3 = "['programmer']"

out = [str1, str2, str3]
out = eval('+'.join(out))

# 결과 출력
print(out)

코드 설명

1. ast.literal_eval() 활용

ast.literal_eval()은 문자열로 표현된 파이썬 리터럴(리스트, 튜플, 딕셔너리 등)을 실제 파이썬 객체로 안전하게 변환하는 함수입니다. 위 예제에서는 세 개의 문자열이 각각 튜플로 변환되며, extend() 메서드를 통해 요소들이 하나의 리스트에 순차적으로 추가됩니다.

실행 결과:

['Python', 'for', 'fun', 'vishesh', 'ved', 'Programmer']

2. eval() 활용

eval()은 문자열을 파이썬 표현식으로 평가하여 실행하는 함수입니다. 위 예제에서는 리스트 형태의 문자열들을 '+'.join()으로 연결해 리스트 + 리스트 + 리스트 형태의 표현식을 만든 뒤, 이를 평가하여 하나의 리스트로 병합합니다.

실행 결과:

['python', 'for', 'fun', 'vishesh', 'ved', 'programmer']

주의 사항

eval()은 전달된 문자열을 그대로 코드로 실행하기 때문에, 외부에서 입력된 신뢰할 수 없는 데이터를 처리할 때 심각한 보안 취약점이 될 수 있습니다. 따라서 단순히 문자열 형태의 리터럴을 변환하는 용도라면 eval() 대신 ast.literal_eval()을 사용하는 것이 안전합니다.

마무리

문자열로 표현된 데이터를 리스트로 변환하는 작업은 데이터 파싱, 파일 입출력, API 응답 처리 등 다양한 상황에서 필요합니다. 두 방법의 차이와 보안상 특성을 잘 이해하고 상황에 맞게 활용하시기 바랍니다.