使用python读取JSON文件会产生虚假数据

时间:2017-03-10 22:50:29

标签: python json

我正在尝试解析这个json文件:http://pastebin.com/VcVR0ue0

使用这些模块时

from pprint import pprint
import codecs
import json

file = 'Desktop10000_760_CurtSacks.json'

我尝试过这些方法

a)

data = data = json.load(open(file))

b)

data = json.load(codecs.open(file, encoding='utf_8_sig'))

在这两种情况下,输出都在每个键值前面插入u

{u'document_tone': {u'tone_categories': [{u'category_id': u'emotion_tone',
                                          u'category_name': u'Emotion Tone',
                                          u'tones': [{u'score': 0.111838,
                                                      u'tone_id': u'anger',
                                                      u'tone_name': u'Anger'},
                                                     {u'score': 0.159831,
                                                      u'tone_id': u'disgust',
                                                      u'tone_name': u'Disgust'},
                                                     {u'score': 0.17082,
                                                      u'tone_id': u'fear',
                                                      u'tone_name': u'Fear'},
                                                     {u'score': 0.507748,
                                                      u'tone_id': u'joy',
                                                      u'tone_name': u'Joy'},
                                                     {u'score': 0.520722,
                                                      u'tone_id': u'sadness',
                                                      u'tone_name': u'Sadness'}]},

如何正确读取文件?

2 个答案:

答案 0 :(得分:1)

看起来所有内容都被正确解析。

Python的unicode字符串语法是:

u'Here is the string.'

所以Python相当于这个JSON:

{"foo": "bar"}

就是这样:

{u'foo': u'bar'}

如果您只是打印出数据的Python表示,您将看到Python语法。

答案 1 :(得分:0)

' u'表示一个python unicode字符串 - 这是正常的。 json库本质上返回unicode字符串,因此看起来您的数据正在被正确解析。

如果由于某种原因你不想在你的JSON中使用unicode字符串你可以使用yaml

import yaml
data = yaml.safe_load(open(file))
print( data )

所以你得到

{'key':'item'}

而不是

{u'key':'item'}

虽然我没有看到不使用unicode的理由,但是对于大多数用途来说它不会影响太多。 (见Python str vs unicode types