簡體   English   中英

如何將帶有“”(而不是“)的 JSON 字符串轉換為 Python 中的 JSON

[英]How to convert JSON string with “” (instead of ") to JSON in Python

我有一個字符串:

a = '"{""key1"": ""val1"", ""key2"":""val2""}"'

將其轉換為 Python 中的字典的最適當方法是什么?

普通json.loads(a)無法破譯這種格式。

編輯:這個奇怪的 JSON 字符串是在我用一個“類似json”的列讀取 CSV 時創建的。

假設字符串來自 CSV 文件,使用csv進行解碼,然后將結果傳遞給json進行解碼。

>>> import io, csv, json
>>> a = '"{""key1"": ""val1"", ""key2"":""val2""}"'
>>> csv_file_like = io.StringIO(a)
>>> reader = csv.reader(csv_file_like)
>>> result = list(reader)
>>> json.loads(result[0][0])
{'key1': 'val1', 'key2': 'val2'}

如果a已經通過從 CSV 文件中讀取來設置,這會簡單一些; 您可以跳過使用ioa創建類似文件的 object 並直接在原始 ZCC8AFD638C551C4A4A 文件上使用csv.reader

我不知道 json 的這種格式。 所以可以使用下一個function:

import json
def load_weird_json(json_string):
    a = json_string.replace('""','"')
    a = a[1:len(a)-1]
    return json.loads(a)

嘗試

import json
a = '"{""key1"": ""val1"", ""key2"":"val2""}"'
a = a.replace('""','"').replace('}"',"}").replace('"{','{')
data = json.loads(a)
print(data)

output

{'key1': 'val1', 'key2': 'val2'}

@chepner 的回答實際上讓我朝着正確的方向前進。 The string was loaded from CSV and I could effectively prevent this weird JSON forming by using answer from here: spark 2.0 read csv with json , ie add the escape char '\"' option.

感謝您的回答 - 他們都工作:)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM