0

我有一个字符串,它应该是 ajson但在最后,只有在最后它有任意长度的尾随垃圾字符,我需要摆脱那些垃圾。

每个 json 条目都{}. 我想遍历字符串和计数{}当数字相同时停止(它现在可以工作,我将有时间找到产生尾随垃圾的错误)。

如何以有效的方式在 python 中实现这一点,内容可以超过 32k ?

例如:

{'name':'Cverg', 'age':18, 'sex':'male'}iodsnd[erworkpweff,ccsd

有效部分是

{'name':'Cverg', 'age':18, 'sex':'male'}

垃圾是

iodsnd[erworkpweff,ccsd

垃圾是多变的,是随机的。

4

2 回答 2

6

该类可以无需更改即可处理此问题json.JSONDecoder()

import json

decoder = json.JSONDecoder()
result, index = decoder.raw_decode(string_with_trailing_garbage)

index值指向解码结束的位置。

于 2013-09-04T20:31:09.367 回答
0

请注意,json 模块不接受单引号作为有效的 json。字符串值和键都必须用双引号引起来。否则你会得到:

ValueError: Expecting property name enclosed in double quotes: line 1 column 2 (char 1)

我想也许你可以摆脱单引号中的值,但它仍然抱怨。Martijn的回答仍然是最好的。

于 2013-09-04T21:11:28.523 回答