Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/358.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python3.3:将字符串转换为dict_Python - Fatal编程技术网

python3.3:将字符串转换为dict

python3.3:将字符串转换为dict,python,Python,如何将这个字符串从str转换为dict s = "{'a':3, 'b':'user's test'}" # as per comment s = decode() a = dict() a = eval(s) 这不对!我不能使用eval()或exec()来转换它。字符串中有一个“字符。在这种情况下不能使用,而且通常不安全eval允许任意代码执行,并且容易出现奇怪的错误和安全问题 我的建议是使用不同的序列化方法,例如,根据需要自动转义字符串,或者将Python对象转换为二进制表示 编辑: 此外

如何将这个字符串从str转换为dict

s = "{'a':3, 'b':'user's test'}" # as per comment
s = decode()
a = dict()
a = eval(s)

这不对!我不能使用
eval()
exec()
来转换它。字符串中有一个
字符。

在这种情况下不能使用,而且通常不安全
eval
允许任意代码执行,并且容易出现奇怪的错误和安全问题

我的建议是使用不同的序列化方法,例如,根据需要自动转义字符串,或者将Python对象转换为二进制表示

编辑:
此外,语法错误:字典键/值由
分隔,而不是
=
分隔。所以它应该是
{'a':3,'b':'user's test'}
,用反斜杠转义
'

是什么让您认为
s
是Python可以识别的格式?这不是一个正确的dict文本,额外的引号不是这里唯一的问题。不-这是不正确的,不仅仅是因为它里面有错误的
。。。这些数据是从哪里来的?为什么会这样。。。至少提供一些更多的信息…
“{'a':3,'b':'user's test'}”
对于json.loads来说可能是安全的,返回dict.抱歉,我做了一个mistake@TankorSmash:将原始歧义语法转换为JSON的解析器留给读者作为练习?我们只有一个字符串。。。如果他可以将其转换为JSON,或者处于某个阶段,他可以使用pickle——实际上没有问题。。。(顺便说一句,不是我的反对票)如果他只有那个字符串,那么解决方案将很简单:
a={'a':3,'b':'user's test'}
。我总是假设给定的例子是一个更一般的问题的一部分。这可能是他应该(或想要)的。。。如果他能把它打进去,这不是一个真正的问题。。。否则,更多的是他的数据是什么样的。。。目前,它的格式不是任何标准库/函数都可以用来将其转换为可用于任何东西的类型…同意,数据按现状不可用。这正是我在回答中所说的,同时提到了替代方法。我仍然不明白为什么会投反对票。我猜问题是“如何将这个字符串作为可用的Python对象”而你的答案是使用其他东西开始,并强调他们得到的数据无效-OP知道这一点,因为这就是他们问这个问题的原因。。。