728x90
반응형
질문 : 사전의 문자열 표현을 사전으로 변환 하시겠습니까?
어떻게 변환 할 수 str
(A)의 표현을 dict
로, 예를 들면 다음과 같은 문자열로 dict
?
s = "{'muffin' : 'lolz', 'foo' : 'kitty'}"
eval
을 사용하지 않는 것을 선호합니다. 그 밖에 무엇을 사용할 수 있습니까?
그 주된 이유는 그가 작성한 동료 클래스 중 하나가 모든 입력을 문자열로 변환하기 때문입니다. 이 문제를 다루기 위해 그의 수업을 수정하고 싶지는 않습니다.
답변
ast.literal_eval
사용할 수 있습니다.
>>> import ast
>>> ast.literal_eval("{'muffin' : 'lolz', 'foo' : 'kitty'}")
{'muffin': 'lolz', 'foo': 'kitty'}
eval
사용하는 것보다 안전합니다. 자체 문서에 따르면 다음과 같습니다.
>>> help(ast.literal_eval)
Help on function literal_eval in module ast:
literal_eval(node_or_string)
Safely evaluate an expression node or a string containing a Python
expression. The string or node provided may only consist of the following
Python literal structures: strings, numbers, tuples, lists, dicts, booleans,
and None.
예를 들면 :
>>> eval("shutil.rmtree('mongo')")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<string>", line 1, in <module>
File "/opt/Python-2.6.1/lib/python2.6/shutil.py", line 208, in rmtree
onerror(os.listdir, path, sys.exc_info())
File "/opt/Python-2.6.1/lib/python2.6/shutil.py", line 206, in rmtree
names = os.listdir(path)
OSError: [Errno 2] No such file or directory: 'mongo'
>>> ast.literal_eval("shutil.rmtree('mongo')")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/opt/Python-2.6.1/lib/python2.6/ast.py", line 68, in literal_eval
return _convert(node_or_string)
File "/opt/Python-2.6.1/lib/python2.6/ast.py", line 67, in _convert
raise ValueError('malformed string')
ValueError: malformed string
출처 : https://stackoverflow.com/questions/988228/convert-a-string-representation-of-a-dictionary-to-a-dictionary
728x90
반응형
'프로그래밍 언어 > Python' 카테고리의 다른 글
파이썬에서 두 목록을 비교하고 일치 항목을 반환하는 방법 (0) | 2021.09.29 |
---|---|
파이썬에서 두 배열을 연결하는 방법 (0) | 2021.09.29 |
Python 오류 “ImportError : No module named” (0) | 2021.09.28 |
Python에 ++ 및 - 연산자가 없는 이유 (0) | 2021.09.28 |
파이썬에서 문자열 'contains' 메서드를 사용하는 방법 (0) | 2021.09.28 |