2014-06-07 3 views
0

(Data: http://paste.ubuntu.com/7605667/)json.loads не печатает список из текстового файла

Я пытаюсь создать объект JSON из текстового файла и распечатать его в виде списка питона dicts. Код я использую:

records=[json.loads(line) for line in open(path)] 
records[0] 

Это дает мне:

{u'a': u'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.78 Safari/535.11', u'c': u'US', u'nk': 1, u'tz': u'America/New_York', u'gr': u'MA', u'g': u'A6qOVH', u'h': u'wfLQtf', u'cy': u'Danvers', u'l': u'orofrog', u'al': u'en-US,en;q=0.8', u'hh': u'1.usa.gov', u'r': u'http://www.facebook.com/l/7AQEFzjSi/1.usa.gov/wfLQtf', u'u': u'http://www.ncbi.nlm.nih.gov/pubmed/22415991', u't': 1331923247, u'hc': 1331822918, u'll': [42.576698, -70.954903]} 

Но когда я использую pprint, я получить желаемые результаты:

pprint(records[0]) 
{u'a': u'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.78 Safari/535.11', 
u'al': u'en-US,en;q=0.8', 
u'c': u'US', 
u'cy': u'Danvers', 
u'g': u'A6qOVH', 
u'gr': u'MA', 
u'h': u'wfLQtf', 
u'hc': 1331822918, 
u'hh': u'1.usa.gov', 
u'l': u'orofrog', 
u'll': [42.576698, -70.954903], 
u'nk': 1, 
u'r': u'http://www.facebook.com/l/7AQEFzjSi/1.usa.gov/wfLQtf', 
u't': 1331923247, 
u'tz': u'America/New_York', 
u'u': u'http://www.ncbi.nlm.nih.gov/pubmed/22415991'} 

Как это можно сделать с json.loads? Я попытался с помощью «записей [0] .split („“)», но получаю сообщение об ошибке:

AttributeError: 'dict' object has no attribute 'split' 
+0

вы пытаетесь взять Dict с большим количеством пар ключ/значение, и включить его int o список, где каждая запись представляет собой одну пару ключ/значение из исходного dict? – dano

+0

Это поможет, если вы сможете показать нам свой файл ввода. – shaktimaan

+0

Хмм, я бы хотел показать вывод с помощью json.loads() таким же образом, как в примере выше, чем pprint(). – mikesynan

ответ

0

Выход довольно-печати не список dicts; это то же самое, что и у вас с обычной печатью, просто отображается с отсортированными ключами и каждой парой ключ-значение в отдельной строке.

Если вы хотите распечатать список dicts, как вы говорите, вы, вероятно, хотите

print records 

Если вы хотите, чтобы пройти через пар ключ-значение каждого Словаре, вы можете перебираем их iteritems():

for record in records: 
    for key, value in record.iteritems(): 
     do_whatever_with(key, value) 
     # e.g. print '{}: {}'.format(key, value) 

Если вы не имеете твердое понимание того, что вы хотите делать, полагая, что из должно быть шаг 1.

+0

В основном я хочу, чтобы иметь возможность использовать json.loads для вывода вывода по одной строке в строке, как я мог сделать с pprint. но спасибо за ваш комментарий. – mikesynan

+0

@mikesynan: Если вы хотите отображать данные в определенном формате, вы, вероятно, захотите пройти через пары ключ-значение каждого dict и обработать выходное форматирование самостоятельно. – user2357112

 Смежные вопросы

  • Нет связанных вопросов^_^