<개인공부>/[Python]

[python] 파이썬 리스트를 문자열로 변환 하는 방법

BlockDMask 2022. 5. 7. 10:00
반응형

안녕하세요. BlockDMask입니다.
오늘은 파이썬에서 리스트를 문자열로 변환하는 방법에 대해서 알아보려 합니다.
리스트 내에 문자들만 있는 경우나 숫자가 섞여있는 경우에 해당 리스트를 문자열로 변환할 수 있는 방법에 대해 알아보려 합니다.
join과 for 반복문을 이용해서 예제를 만들어 보겠습니다.

<목차>
1. 파이썬 join을 이용해서 리스트를 문자열로 변환
2. 파이썬 for 반복문을 이용해서 리스트를 문자열로 변환

 

1. python join 함수를 이용한 리스트 변환


파이썬의 join 함수를 이용하면 편하게 리스트를 문자열로 변환할 수 있습니다. 
join 함수는 제가 다른 포스팅에서 상세하게 다루었으니 여기를 참고해주세요.
join 함수 상세 설명 : https://blockdmask.tistory.com/468

 

1-1) ''.join(리스트)

arr = ['가', '나', '다', '라', "BlockDMask", '마']
print(arr)

# 그냥 하나의 문자열로 합쳐버리기
str = ''.join(arr)
print(str)

위 결과를 보면 ''.join(arr) 을 이용해서 리스트의 문자, 문자열들을 모두 하나의 문자열로 변환해서 반환해 줍니다.

 

 

1-2) '구분자'.join(리스트)

join 앞쪽에 구분자를 넣어서 다양한 문자열을 만들어 줄 수 있습니다.

# python list를 문자열로 변환
arr = ['가', '나', '다', '라', "BlockDMask", '마']
print(arr)

# 쉼표를 추가해서 문자열 만들기
print("> ',' 추가")
str2 = ','.join(arr)
print(str2)

# 슬래시를 추가해서 문자열 만들기
print("> '/' 추가")
str3 = '/'.join(arr)
print(str3)

# 개행 문자를 구분자로 추가해서 문자열 만들기
print("> '\\n' 추가")
str4 = '\n'.join(arr)
print(str4)

위 결과를 보면 이렇게 구분자를 추가해서 리스트의 문자열을 이쁘장하게 만들 수 있습니다.

 

 

1-3) 리스트에 숫자가 섞여있는 경우

파이썬 for 반복문을 한 줄로 사용하면 
=> str(s) for s in 리스트
리스트 안에 있는 요소들을 하나씩 빼서 문자 타입으로 변환해주는 작업입니다.

위 작업을 통해서 리스트 내부에 요소를 하나씩 문자열 타입으로 변환해서 1-1, 1-2 작업을 수행해주면 됩니다.
예제를 한 번에 보겠습니다.

arr = [1, 2, 3, "BlockDMask", 4, 5]
print(arr)

# 문자열 만들기
print("> 문자열로 만들기")
str1 = ''.join(str(s) for s in arr)
print(str1)

# 쉼표를 추가해서 문자열 만들기
print("> ',' 추가")
str2 = ','.join(str(s) for s in arr)
print(str2)

# 슬래시를 추가해서 문자열 만들기
print("> '/' 추가")
str3 = '/'.join(str(s) for s in arr)
print(str3)

# 개행 문자를 구분자로 추가해서 문자열 만들기
print("> '\\n' 추가")
str4 = '\n'.join(str(s) for s in arr)
print(str4)

 

 

2. python for 반복문을 이용한 리스트 변환


2-1) 리스트에 문자열만 있는 경우

for 반복문을 이용해서 리스트 내부의 요소 하나하나를 문자열을 담을 변수에
더해서 연결해주는 방법으로 리스트를 문자열로 변환할 수 있습니다.

arr = ['가', '나', '다', '라', "BlockDMask", '마']
print(arr)

str = ''
for s in arr:
    str += s

print(str)

 

 

2-2) 리스트에 문자와 숫자가 섞여있는 경우

for 반복문으로 요소를 받아올 때 해당 요소를 str(요소)를 통해서 해당 요소를 문자 타입으로 변환해주면 됩니다.
이번에는 for 반복문을 포함한 로직을 함수로 만들어 보았습니다.

# 리스트를 매개변수로 받아서, 문자열을 반환
def convertString(arr):
    str_result = ""
    for s in arr:
        str_result += str(s)

    return str_result


arr = [1, 2, 3, "BlockDMask", 4, 5]
print(arr)

str = convertString(arr)
print(str)

 

 

2-3) for 반복문 + 구분자를 이용해서 문자열로 변환 시 특별한 처리를 하고 싶은 경우

2-2에서 만들어준 convertString 함수에 두 번째 인자로 구분자를 받아줍니다.
그리고 구분자가 리스트의 마지막 요소 뒤에는 들어가면 안 되기 때문에 마지막 요소를 구분해서 처리해 줍니다.
for 반복문에서 인덱스와 값을 한 번에 얻어오기 위해서 enumerate 함수를 이용했습니다.

# 리스트를 매개변수로 받아서, 문자열을 반환
def convertString(arr, sep):
    str_result = ""
    for index, s in enumerate(arr):     # 인덱스, 값 한번에 받아오기
        if index + 1 == len(arr):
            str_result += str(s)        # 마지막 요소 : 구분자 없이
        else:
            str_result += str(s) + sep

    return str_result


arr = [1, 2, 3, "BlockDMask", 4, 5]
print(arr)

print('> 문자열로 만들기')
str1 = convertString(arr, '')
print(str1)

print('> "," 추가')
str2 = convertString(arr, ',')
print(str2)

print('> "/" 추가')
str3 = convertString(arr, '/')
print(str3)

print('> "\\n" 추가')
str4 = convertString(arr, '\n')
print(str4)

위처럼 파이썬 enumerate를 이용하면 for 반복문을 돌면서 현재 index(몇번째)인지와 현재 값을 동시에 얻어올 수 있습니다.
마지막 요소를 예외 처리해서 for 반복문을 이용해서 위와 같이 구분자 작업을 할 수 있습니다.

하지만 for 반복문을 이용해서 저렇게 복잡해 보이는 코드 대신에 1번에서 소개해드린 join 함수를 이용하면 훨씬 간편하겠죠? 

 

이상으로 오늘은 파이썬 join, for를 이용해서 리스트 내부 문자, 숫자를 문자열로 변환하는 방법에 대해서 알아보았습니다.
감사합니다.

반응형