list -> str -> list로 변환이 가능할까요?
조회수 3061회
제가 부득이하게 list를 str로 바꿔야 하는데... str로 바꾼 데이터는 다시 list로 (똑같이) 못 만들겠더라구요. 이렇게 할 수 있는 방법이 있나요? (지금 split이랑 slicing등 온갖 지저분하게 해서 비슷하게 만들어서 처리하고는 있는데 결국, 따옴표 등의 문제로 마지막에서 해결이 안되고 있습니다..)
예를 들어드리면
s = [1,2,3,4]
a = str(s)
k = list(a)
이렇게 하고 k를 출력해보면
['[', '1', ',', ' ', '2', ',', ' ', '3', ',', ' ', '4', ']']
이렇게 나옵니다.
이게 원래 상태인 [1,2,3,4] 이렇게 나오게 만들 방법은 전혀 없는 걸까요?
제가 질문을 잘못 ... 한 셈인데
s = [1,2,3,4]로 예를 들었지만, 실제 데이터는
s = ['Users/Loggs/ID/OK', 20, 5, '2020-02-12 11:28:09', '2020-02-12 11:28:22', '0:00:13',
'/', 49, 5, '2020-02-14 12:35:54', '2020-02-14 12:35:54', '0:00:00', '/']
대개 이런 식으로 뒤죽박죽 입니다...
5 답변
-
list를 str로 결합하고, 다시 list 형식으로 바꾸는 코드입니다.
eval()
은 str 형식의 문자를 파이썬 코드로서 실행해 주는 함수입니다.k = ['[', '1', ',', ' ', '2', ',', ' ', '3', ',', ' ', '4', ']'] print(eval(''.join(k))) # [1, 2, 3, 4]
설명이 잘 안 되네요ㅠㅅㅠ
-
(•́ ✖ •̀)
알 수 없는 사용자
-
-
import re s = [1, 2, 3, 4] a = str(s) pat = re.compile("[0-9]") k = list(map(int, pat.findall(a)))
정규식으로 숫자만 찾아서 하는 방식인데 이런식은 어떨까요?
-
(•́ ✖ •̀)
알 수 없는 사용자
-
-
k = map(int, a[1:-1].split(', '))
대괄호를 없애고
,
를 기준으로 잘라 리스트로 만든 다음 int로 변환해주면 될 것 같습니다.그밖에도 여러가지 방법이 있네요...!
https://www.geeksforgeeks.org/python-convert-a-string-representation-of-list-into-list/
-
(•́ ✖ •̀)
알 수 없는 사용자
-
-
위에도 언급되어 있지만 eval 함수로 파이썬 문장을 바로 수행할 수 있습니다.
In [1]: s = [1,2,3,4] In [2]: a = str(s) In [3]: a Out[3]: '[1, 2, 3, 4]' In [4]: l = eval(a) In [5]: l Out[5]: [1, 2, 3, 4]
-
주신 실사용예는 문자열로 바꾸었다가 다시 리스트로 바꾸기에는 너무 복잡하네요.
근본적인 질문을 해야 할 것 같습니다.
왜 리스트를 문자열로 변환하여야 하나?
저장을 위한 것이라면, 그냥 리스트 형태를 유지하면서 저장할 수 있습니다. 다른 이유라도, 구지 문자열 변환을 하지 않는 방법을 찾는 것이 가장 좋은 방법으로 생각됩니다.
왜 문자열로 변환하나요?
댓글 입력