我尝试使用json将包含dict的字符串转换为dict对象。
string = '{"key1":"my"value","key2":"my"value2"}'
js = json.loads(s,strict=False)
它输出json.decoder。必须是','分隔符号:第1行第13列(第12个字符),因为“是一个分隔符,而且它太多了
实现目标的最佳方法是什么?
我找到的解决方案是在字符串上执行几个.replace,用一个模式替换legit“,直到只剩下illgal“,然后用legit“替换回该模式,之后我可以使用json.loads,然后用非法“替换剩余的模式。但必须有另一种方法
例如:
string = '{"key1":"my"value","key2":"my"value2"}'
string = string.replace('{"','__pattern_1')
string = string.replace('}"','__pattern_2')
...
...
string = string.replace('"','__pattern_42')
string = string.replace('__pattern_1','{"')
string = string.replace('__pattern_2','}"')
...
...
js = json.loads(s,strict=False)
3条答案
按热度按时间dgjrabp21#
我在这里所做的就是用其他的东西替换所有需要的双引号,然后删除不需要的双引号,然后再转换回来。
9jyewag02#
变量
string
不是有效的JSON字符串。正确的字符串应为:f0ofjuux3#
问题是字符串包含无效的json格式。
字符串
'{"key1": "my"value", "key2": "my"value2"}'
:key1
的值以"my"
结尾,其他字符value"
与格式不符。您可以使用字符转义,有效的json将如下所示:
{"key1": "my\"value", "key2": "my\"value2"}
.由于您将其定义为value,因此需要对转义字符进行转义:
string = '{"key1": "my\\"value", "key2": "my\\"value2"}'
网上有很多关于 * 字符转义 * 的教育材料。如果有什么不清楚的地方,我建议去看看
编辑:如果你坚持在代码中修复字符串(我不建议这样做,请参见注解),你可以这样做:
这里假设真实的的结束双引号后面跟一个
,:}]
。