Python 如何将其作为一个函数来实现,以清除跟踪垃圾?

Python 如何将其作为一个函数来实现,以清除跟踪垃圾?,python,python-2.7,Python,Python 2.7,我有一个字符串,它应该是一个json,但在最后,只有在最后,它才有任意长度的尾随垃圾字符,我需要清除这些垃圾 每个json条目都以{开头,以}结尾。我想迭代字符串并计数{和},当数字相同时停止(这将暂时起作用,我将有时间找到生成尾部垃圾的bug) 如何在python中高效地实现这一点,内容可以超过32k 例如: {'name':'Cverg', 'age':18, 'sex':'male'}iodsnd[erworkpweff,ccsd 有效部分为 {'name':'Cverg', 'age'

我有一个字符串,它应该是一个
json
,但在最后,只有在最后,它才有任意长度的尾随垃圾字符,我需要清除这些垃圾

每个json条目都以
{
开头,以
}
结尾。我想迭代字符串并计数
{
}
,当数字相同时停止(这将暂时起作用,我将有时间找到生成尾部垃圾的bug)

如何在python中高效地实现这一点,内容可以超过32k

例如:

{'name':'Cverg', 'age':18, 'sex':'male'}iodsnd[erworkpweff,ccsd
有效部分为

{'name':'Cverg', 'age':18, 'sex':'male'}
垃圾是

iodsnd[erworkpweff,ccsd
垃圾是可更改的,并且是随机的。

可以在不更改的情况下处理:

import json

decoder = json.JSONDecoder()
result, index = decoder.raw_decode(string_with_trailing_garbage)
索引
值指向解码结束的位置。

可以在不更改的情况下处理此问题:

import json

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

索引
值指向解码结束的地方。

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

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

我想也许你可以用单引号来表达价值观,但它仍然抱怨。Martijn的答案仍然是最好的。请注意,json模块不接受单引号作为有效的json。字符串值和键都必须用双引号括起来。否则你会得到:

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

我想也许你可以用单引号来表达价值观,但它仍然抱怨。Martijn的答案仍然是最好的。

你能给出一个尾随垃圾的例子,以及输入的开始和结束吗?@PhillipCloud我添加了一个例子,其中有问题和有效部分是无效的JSON;单引号是不允许的。你能给出一个尾随垃圾的例子,以及输入的开始和结束吗?@PhillipCloud我添加了一个例子,其中有问题和有效部分是无效的JSON;不允许使用单引号。