有时,我们会遇到字符串带有双层的引号,也就是字符串的最外层是单引号,紧接着是一层双引号,然后内部才是字典,这样的字符串称为“嵌套引号下的字典”。还有时,我们也会遇到更多层引号下的字典。其实,处理的思路都是一样的,就是去掉多余的引号,只保留最外层的一层引号。
一、报错:JSONDecodeError: Extra data: line 1 column 4 (char 3)
当字符串字典是双层引号下的字典,或者说嵌套引号下的字典,在使用json.loads()进行解析时,会出现报错:JSONDecodeError: Extra data: line 1 column 4 (char 3)。
那么,如何解决这类问题呢?
其实,将双层引号去掉,就可以了,例如:
tx = '"{"id":1,"name":"dog"}"'
这里tx字符串最外层是单引号,紧接着是一层双引号,然后内部才是字典。
如果我们使用res = json.loads(tx)解析字典,就会报错如下:
发生报错的原因,就是该字典字符串是双层的引号,需要去掉一层引号。
二、如何解决双层引号下的字典?
使用下面的代码:
tx = '"{"id":1,"name":"dog"}"'
tx = tx[1:-1]
res = json.loads(tx)
print(res)
如上图所示,我们使用tx[1:-1]将其中1层的引号删除了,再进行解析,就成功了。