json.loads不会从文本文件中打印列表

时间:2014-06-07 01:59:46

标签: python json pprint

(数据:http://paste.ubuntu.com/7605667/

我试图从txt文件创建一个json对象并将其打印为python 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'

1 个答案:

答案 0 :(得分: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步。