我想将字符串转换为带双引号的字典
这是例子
"{'a':'b'}"
Run Code Online (Sandbox Code Playgroud)
我尝试用 json.dumps 替换,但没有解决
a = "{'a':'b'}"
b = a.replace("'", "\"") # '{"id":"b"}'
c = json.dumps(c, ensure_ascii=False) # '"{\"id\\":\"b\"}"'
Run Code Online (Sandbox Code Playgroud)
我想这样解决
{"a":"b"}
Run Code Online (Sandbox Code Playgroud)
我该如何解决它?
那不是 JSON。
>>> import json
>>> foo = "{'a':'b'}"
>>> json.loads(foo)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python3.9/json/__init__.py", line 346, in loads
return _default_decoder.decode(s)
File "/usr/lib/python3.9/json/decoder.py", line 337, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "/usr/lib/python3.9/json/decoder.py", line 353, in raw_decode
obj, end = self.scan_once(s, idx)
json.decoder.JSONDecodeError: Expecting property name enclosed in double quotes: line 1 column 2 (char 1)
Run Code Online (Sandbox Code Playgroud)
但它看起来确实很像 python
>>> import ast
>>> ast.literal_eval(foo)
{'a': 'b'}
Run Code Online (Sandbox Code Playgroud)
这是否适合您取决于该字符串的来源及其序列化规则。