在日志中我打印字典转换为字符串
日志输出:
{'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)
如何在不丢失电子邮件中的单引号的情况下转义此字符串?
答案 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的语法。