0

しかし、最後にあるはずの文字列がありjson、最後にのみ任意の長さのゴミ文字があり、そのゴミを取り除く必要があります。

すべての json エントリは で始まり、{で終わり}ます。string と count を反復処理し、数値が同じ場合は停止することを考えました{(}今のところは機能しますが、末尾のガベージを生成するバグを見つける時間が得られます)。

これを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 に答える