gpt4 book ai didi

python - 元素包含未转义双引号的 JSON 字符串

转载 作者:行者123 更新时间:2023-12-01 04:38:51 27 4
gpt4 key购买 nike

尝试从 AJAX 请求解析 JSON 时,返回的字符串包含无效的 JSON。

尽管最佳实践是将服务器更改为使用有效的 JSON 进行回复(如多个相关答案中所建议的那样),但这不是一个选项。

尝试使用 python 解决这个问题,我研究了正则表达式。

主要问题是如下元素(我目前将其用作测试字符串:

testStr = '{"KEY1":"THIS IS "AN" ELEMENT","KEY2":"""THIS IS ANOTHER "ELEMENT""}'

我目前使用以下代码:

jsonString = re.sub(r'(?<=\w)\"(?=[^\(\:\}\,])','\\"',testStr)
jsonString = re.sub(r'\"\"(?![,}:])','\"\\\"',jsonString)

取得的成功非常有限。

如果我使用 C,我会解析字符串,并简单地转义元素内的所有双引号(即在 [:{},] 之前的所有双引号之间)

必须有一种Python式的解析方式,无需诉诸for循环、向前查看并保留历史记录。

编辑:

假设字符串不包含:[ : { } ]并且假设未转义的双引号仅在值内,而不在键内,然后我假设以下内容(或类似的内容应该可以解决问题:

 import re
re.sub(r'(?<![\[\:])\"(?![,\}),'\"',testString)

但是还是不行。

最佳答案

看来我需要休息一下来解决这个问题。

以下正则表达式似乎仅替换元素字符串中包含的双引号。 (根据我在问题中陈述的假设)

output = re.sub(r'(?<![\[\:\{\,])\"(?![\:\}\,])','\\\"', stringName)

我在这里创建了一个沙箱:https://repl.it/vNK

示例输出:

Original String:
{"KEY1":"THIS IS "AN" ELEMENT","KEY2":"""THIS IS ANOTHER "ELEMENT""}

Modified String:
{"KEY1":"THIS IS \"AN\" ELEMENT","KEY2":"\"\"THIS IS ANOTHER \"ELEMENT\""}

Parsed JSON:
{
"KEY1": "THIS IS \"AN\" ELEMENT",
"KEY2": "\"\"THIS IS ANOTHER \"ELEMENT\""
}

欢迎任何建议。

关于python - 元素包含未转义双引号的 JSON 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31195085/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com