将字典的字符串表示形式转换为实际的字典

2024-04-25 09:08:08 发布

您现在位置:Python中文网/ 问答频道 /正文

我打开了一个非常大的json文件,它存储在一个名为data的变量中。打印data的一段代码为我提供了字符串类型的输出:

'{"_index": "11_20190714_184325_01", "_type": "11", "_id": "1feb78aff16852ed", "_score": 0.0, "fields": {"c_u": ["hvhprecision.com"], "tawgs.id": ["p10813", "p449", "p6426", "p6427"]}}{"_index": "11_20190714_184325_01", "_type": "11", "_id": "786fd4ad2415aa7b", "_score": 0.0, "fields": {"c_u": ["thomsonreuters.com"], "tawgs.id": ["p12519", "p510", "p6426"]}}{"_index": "11_20190714_184325_01", "_type": "11", "_id": "5826e7cbd92d951a", "_score": 0.0, "fields": {"tawgs.id": ["p12505", "p18053", "p6426", "p816", "p826", "p8453", "p8458"]}}'

我需要将字典的这个字符串表示形式转换为实际的字典,以便将它展平并创建一个数据帧。你知道吗

但是,当我尝试:

import ast
ast.literal_eval(data)

我得到一个“无效语法”错误。你知道吗

尝试此代码:

with open("es-output.json", "r") as f
    dictionary =  json.loads(f.read())

给我这个错误:

JSONDecodeError: Extra data: line 1 column 184 (char 183)

做一个简单的练习:

json.loads(data)

也输出与上面相同的错误:JSONDecodeError: Extra data: line 1 column 184 (char 183)。你知道吗

我不知道为什么把字符串转换成字典不管用,特别是使用ast库。你知道吗

请帮忙,提前谢谢!你知道吗


Tags: 字符串代码comidjsonfieldsdataindex
1条回答
网友
1楼 · 发布于 2024-04-25 09:08:08

这个字符串

data = '{"_index": "11_20190714_184325_01", "_type": "11", "_id": "1feb78aff16852ed", "_score": 0.0, "fields": {"c_u": ["hvhprecision.com"], "tawgs.id": ["p10813", "p449", "p6426", "p6427"]}}{"_index": "11_20190714_184325_01", "_type": "11", "_id": "786fd4ad2415aa7b", "_score": 0.0, "fields": {"c_u": ["thomsonreuters.com"], "tawgs.id": ["p12519", "p510", "p6426"]}}{"_index": "11_20190714_184325_01", "_type": "11", "_id": "5826e7cbd92d951a", "_score": 0.0, "fields": {"tawgs.id": ["p12505", "p18053", "p6426", "p816", "p826", "p8453", "p8458"]}}'

包含三个单独的JSON对象。你不能从三本字典中创建一本。你知道吗

您需要先将它们分开,然后通过ast运行它们。您可以使用replace

data = data.replace("}{", "},{")
ast.literal_eval(data)

这将返回一个包含各种词典的元组:

({'_index': '11_20190714_184325_01', '_type': '11', '_id': '1feb78aff16852ed', '_score': 0.0, 'fields': {'c_u': ['hvhprecision.com'], 'tawgs.id': ['p10813', 'p449', 'p6426', 'p6427']}}, {'_index': '11_20190714_184325_01', '_type': '11', '_id': '786fd4ad2415aa7b', '_score': 0.0, 'fields': {'c_u': ['thomsonreuters.com'], 'tawgs.id': ['p12519', 'p510', 'p6426']}}, {'_index': '11_20190714_184325_01', '_type': '11', '_id': '5826e7cbd92d951a', '_score': 0.0, 'fields': {'tawgs.id': ['p12505', 'p18053', 'p6426', 'p816', 'p826', 'p8453', 'p8458']}})

相关问题 更多 >

    热门问题