私はSoundcloudAPIからのJSON情報を解析するためのPythonスクリプトを書いていましたが、json.loads(val)を使用するときの「u」とは何か、そしてどのようにJSON情報をuなしでオブジェクトに保存するには?
つまり、なぜこれにuがあるのですか?
>>> json.loads('["foo", {"bar":["baz", null, 1.0, 2]}]')
[u'foo', {u'bar': [u'baz', None, 1.0, 2]}]
私がさらに意味することを理解するには、ここの「JSONのデコード」セクションを参照してください。
Unicode文字列。 Pythonチュートリアル を参照してください。
Pythonソースコードでは、Unicodeリテラルは「u」または「U」文字のプレフィックスが付いた文字列として記述されます:u'abcdefghijk '。
u'
sは、Unicode文字列が作成されることになっていることを示すためにあります。
json.dump
が文字列をUnicode文字列に変換し、それを行った痕跡を残さないのは残念です。json.load
は元に戻すことができないからです。
文字列オブジェクトに変換するには、 PyYAML :を使用します。
>>> import yaml
>>> yaml.load('["foo", {"bar":["baz", null, 1.0, 2]}]')
>>> ['foo', {'bar': ['baz', None, 1.0, 2]}]
しかし注意してください!何らかの理由で、オブジェクト文字列とUnicode文字列を含むオブジェクトをjson.dump
した場合、yaml
はすべてをオブジェクト文字列としてロードします(ただし、実際にはjson.dump
のせいです)