我想用雙引號將字串轉換為dict
。這里有一個例子
"{'a': 'b'}"
我試著用json.dumps來替換 但它沒有得到解決
a = "{'a': 'b'}"
b = a.replace("'", "") # '{"id": "b"}'
c = json.dumps(c, ensure_ascii=False) # '"{"id": "b"}"
我想這樣來解決
{"a":"b"}。
我怎樣才能解決這個問題?
uj5u.com熱心網友回復:
這不是JSON。
這不是JSON。
>>> import json
>>> foo = "{'a': 'b'}"
>>> json.load(foo)
回溯(最近一次呼叫)。
檔案"<stdin>",行1,in <module>
檔案"/usr/lib/python3.9/json/__init__.py",行346,in負載
return _default_decoder.decode(s)
檔案 "/usr/lib/python3.9/json/decoder.py", line 337, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end()
檔案 "/usr/lib/python3.9/json/decoder.py", line 353, in raw_decode
obj, end = self.scan_once(s, idx)
json.decoder.JSONDecodeError: 期待property name enclosed in double quotes: line 1 column 2 (char 1).
但它看起來確實很像python
import ast
ast.literal_eval(foo)
{'a': 'b'}。
這對你來說是否有效,取決于這個字串來自哪里以及它的序列化規則是什么。
uj5u.com熱心網友回復:
json.dumps獲取一個結構并將其轉儲為JSON。 你想要的是json.load,它接收一個JSON字串并將其加載到一個結構中。
>>> json.load(a.replace("' ", '")
{'a': 'b'}。
uj5u.com熱心網友回復:
根據a中的單引號,它更可能是一個Python dict而不是一個JSON物件,所以你可能想要ast.literal_eval()來代替。
>>> import ast
>>> a = "{'a': 'b'}"
>>> ast.literal_eval(a)
{'a': 'b'}。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/311389.html
標籤:
