我正在尝试解析这个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'}]},
如何正确读取文件?
答案 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)