2

だから、私は誰かにいくつかのデータのJSONダンプを送ってもらいましたが、彼らは明らかに(単純化された)データが次のようになるようにPythonで(印刷することによって)怠惰にそれを行いました:

{u'x': u'somevalue', u'y': u'someothervalue'}

有効な JSON の代わりに:

{"x": "somevalue", "y": "someothervalue"}

有効な JSON ではないため、当然 json.loads() は解析に失敗します。

Python には、このような独自の出力を解析するためのモジュールが含まれていますか? 私は実際に、自分で解析する方が、この人に彼が何を間違えたのか、それを修正する方法を説明しようとするよりも速いと思います.

4

2 に答える 2

4

次の方法で回避できる場合があります。

>>> s = "{u'x': u'somevalue', u'y': u'someothervalue'}"
>>> from ast import literal_eval
>>> literal_eval(s)
{u'y': u'someothervalue', u'x': u'somevalue'}
于 2013-06-03T22:12:34.917 に答える
1

demjson python モジュールでは、厳密な操作と厳密でない操作が可能です非厳密モードでの許可の一部のリストを次に示します。

NON-STRICT モードで処理する場合、以下が許可されます。

* Unicode format control characters are allowed anywhere in the input.
* All Unicode line terminator characters are recognized.
* All Unicode white space characters are recognized.
* The 'undefined' keyword is recognized.
* Hexadecimal number literals are recognized (e.g., 0xA6, 0177).
* String literals may use either single or double quote marks.
* Strings may contain \x (hexadecimal) escape sequences, as well as the
  \v and \0 escape sequences.
* Lists may have omitted (elided) elements, e.g., [,,,,,], with
  missing elements interpreted as 'undefined' values.
* Object properties (dictionary keys) can be of any of the
  types: string literals, numbers, or identifiers (the later of
  which are treated as if they are string literals)---as permitted
  by ECMAScript.  JSON only permits strings literals as keys.
于 2013-06-03T22:16:19.947 に答える