将字符串转换为dict时出现python eval错误

时间:2018-02-16 11:25:23

标签: python string python-3.x dictionary eval

我正在使用python,当我对字符串进行eval以获取字典时,它会向我显示错误" SyntaxError:invalid syntax" 字符串是通过套接字连接接收的,它包含一个字典。 我需要找回原来的字典

确切错误低于

File "<string>", line 1 
##here goes my long string received over socket
                                   ^
SyntaxError: invalid syntax

我不知道这是怎么回事。 我知道我可以使用pickle或json发送数据,但这不是目前的要求

1 个答案:

答案 0 :(得分:1)

首先,从不使用eval,除非您有一个非常具体的用例需要它:它会带来安全风险。相反,请使用ast.literal_eval

其次,我无法重现您的错误:

import ast

mystr = "{'a': 1, 'b': 2, 'c': 3, 'd': 4}"

ast.literal_eval(mystr)        # {'a': 1, 'b': 2, 'c': 3, 'd': 4}
type(ast.literal_eval(mystr))  # dict