如何在python中将字符串转换为字典

时间:2014-10-06 14:54:39

标签: python json dictionary

在日志中我打印字典转换为字符串

日志输出:

  {'email': 'brian-o'connor@aaaaa.com'}

然后我尝试将此字符串转换回dict。

print json.loads(my_str)

这是我遇到的错误:

simplejson.decoder.JSONDecodeError: Expecting property name enclosed in double quotes: line 1 column 1 (char 1)

如何在不丢失电子邮件中的单引号的情况下转义此字符串?

3 个答案:

答案 0 :(得分:2)

您的示例不是有效的JSON,因为只允许双引号括起键值对。 有效的JSON字符串应该类似于'{"email": "brian-o\'connor@aaaaa.com"}'

如果我采用原始字符串,可以将其转换为有效的格式:

import ast, json

s = "{'email': 'brian-o\\'connor@aaaaa.com'}"
# note nested apostrophe need to be escaped for literal parsing

valid_s = json.dumps( ast.literal_eval(s) )
# we have valid json string now '{"email": "brian-o\'connor@aaaaa.com"}'

# Now we can get python's dictionary back
d = json.loads(valid_s)  # {u'email': u"brian-o'connor@aaaaa.com"}
d['email']               # u"brian-o'connor@aaaaa.com"

答案 1 :(得分:0)

试试这样: -

>>> import ast
>>> ast.literal_eval("{'email': 'brian-o\\'connor@aaaaa.com'}")
{'email': 'brian-o connor@aaaaa.com'}

答案 2 :(得分:-1)

您输入的内容不正确。 该预测抱怨它“期望用双引号括起来的属性名称:第1行第1列”。 你输入:{'email':'brian-o'connor@aaaaa.com'}。它不符合python的语法。