如何在Python中将带有“”(而不是“)的JSON字符串转换为JSON

问题描述 投票:0回答:4

我有一个字符串:

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

在Python中将其转换为字典的最合适方法是什么?

普通json.loads(a)无法解密此格式。

编辑:当我读取带有一个“类似于json的”列的CSV时,会创建此奇怪的JSON字符串。

python json csv string-parsing spark-csv
4个回答
1
投票

我不知道json的这种格式。因此,您可以使用下一个功能:

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

1
投票

尝试

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

输出

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

1
投票

假设字符串来自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'}

如果已经通过从CSV文件读取设置了a,则这会简单一些;您可以跳过使用ioa创建类似文件的对象的操作,而直接在原始CSV文件上使用csv.reader


0
投票

@ chepner的回答实际上向正确的方向发送了我。该字符串是从CSV加载的,我可以通过在此处使用spark 2.0 read csv with json的答案来有效地防止这种奇怪的JSON形成:即,添加转义字符'\"'选项。

感谢您的回答-它们都可以工作:)

© www.soinside.com 2019 - 2024. All rights reserved.