2014-05-04 2 views
0

Я пытаюсь написать код на python и развернуть его в Google App Engine. Я новичок в обоих этих вещах. У меня есть json, который содержит следующее:Правильный способ загрузки данных из json-файла в python

[ 
    { 
    "sentiment":-0.113568, 
    "id":455908588913827840, 
    "user":"ANI", 
    "text":"Posters put up against Arvind Kejriwal in Varanasi http://t.co/ZDrzjm84je", 
    "created_at":1.397532052E9, 
    "location":"India", 
    "time_zone":"New Delhi" 
    }, 
    { 
    "sentiment":-0.467335, 
    "id":456034840106643456, 
    "user":"Kumar Amit", 
    "text":"Arvind Kejriwal's interactive session with Varansi Supporter and Opponent will start in short while ..Join at http://t.co/f6xI0l2dWc", 
    "created_at":1.397562153E9, 
    "location":"New Delhi, Patna.", 
    "time_zone":"New Delhi" 
    }, 

Я пытаюсь загрузить эти данные в python. У меня есть следующий код для его

data = simplejson.load(open('data/convertcsv.json')) 
     # print data 
     for row in data: 
      print data['sentiment'] 

Я получаю следующее сообщение об ошибке - TypeError: индексы список должны быть целые числа, не ул Если я раскомментируйте строку данных печати и удалить последние 2 строки я могу видеть все данные в консоли. Я хочу иметь возможность делать некоторые вычисления в настроении, а также искать некоторые слова в тексте. Но для этого мне нужно знать, как это сделать за строкой.

ответ

0

Попробуйте это:

import json 

f = open('data/convertcsv.json'); 

data = json.loads(f.read()) 

f.close() 

for row in data: 
     print row['sentiment'] 
+1

нет необходимости использовать '.loads()', '[.load()' это не проблема здесь] (http://stackoverflow.com/a/23470499/4279). – jfs

3

Если вы хотите, чтобы очистить его немного

import json 

with open('data/convertcsv.json') as f: 
    data = json.loads(f.read()) 

for row in data: 
    print row['sentiment'] 

«с» только оставляет файл открытым, как его использовать, а затем закрывает его автоматически один раз выполняется отложенный блок под.

0

Вопрос заключается в том, что вы используете data['sentiment'] вместо row['sentiment'] в противном случае ваш код не в порядке:

with open('data/convertcsv.json', 'rb') as file: 
    data = simplejson.load(file) 
# print data 
for row in data: 
    print row['sentiment'] # <-- data is a list, use `row` here 
Смежные вопросы