如何在python中将无效的json转换为val;id json

2024-09-30 06:34:49 发布

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

我的json字符串:

"{'Link': 'media/pdf/details/all-india-govt-jobs/other-all-india-govt-jobs/5472540504.pdf', 'Title': 'Corrigendum'},
{'Link': 'media/pdf/details/all-india-govt-jobs/other-all-india-govt-jobs/3901883467.pdf', 'Title': 'Notification '},
{'Link': 'http://www.nbagr.res.in/', 'Title': ' Official Website'}"

期望听写:

^{pr2}$

如何将第一个无效的字典转换成像第二个一样有效的字典。在


Tags: 字符串json字典pdftitlejobslinknotification
2条回答

是的,它不是有效的JSON,但是如果用括号将字符串括起来,则可以将该字符串传递给^{}

>>> s="""{'Link': 'media/pdf/details/all-india-govt-jobs/other-all-india-govt-jobs/5472540504.pdf', 'Title': 'Corrigendum'},
... {'Link': 'media/pdf/details/all-india-govt-jobs/other-all-india-govt-jobs/3901883467.pdf', 'Title': 'Notification '},
... {'Link': 'http://www.nbagr.res.in/', 'Title': ' Official Website'}"""
>>> import ast
>>> ast.literal_eval("[" + s + "]")
[{'Link': 'media/pdf/details/all-india-govt-jobs/other-all-india-govt-jobs/5472540504.pdf', 'Title': 'Corrigendum'}, 
 {'Link': 'media/pdf/details/all-india-govt-jobs/other-all-india-govt-jobs/3901883467.pdf', 'Title': 'Notification '}, 
 {'Link': 'http://www.nbagr.res.in/', 'Title': ' Official Website'}]

这里处理的是一个格式错误的JSON文件:JSON使用双引号(“)而不是单引号(')。您的JSON字符串似乎无法决定它是行式JSON(但带有尾随逗号)还是普通JSON(但没有带换行符的[])。我强烈建议您修复输入。在

也就是说,这段代码应该从字符串中加载对象:

import json
docs = [ json.loads(line.strip(",")) for line in json_string.replace("'", '"').split("\n") ]

请记住,这是专门为您的输入量身定做的。如果您的输入包含转义换行符、转义引号字符或其他类似的内容,它将中断。在

这就是为什么最好将输入修改为properJSON。然后你就可以用

^{pr2}$

或者

docs = [ json.loads(line) for line in json_string.split("\n") ]  # for linewise JSON

它更加稳定和可维护。在

相关问题 更多 >

    热门问题