2012-06-06 30 views
0

我遇到了一个我写的代码的问题。当我运行的代码我得到一个错误:如何在Python中使用json提取数据

Traceback (most recent call last): 
File "test23_json_users.py", line 23, in <module> 
for user_dict in abc['user_account']['sip_id']: 
TypeError: list indices must be integers, not str 

代码:

result = '[{"user_account":[{"address":null,"name":null,"country":null,"password":"****","extension":"1112","sip_id":"[email protected]","sip_name":"23001","user_id":7973712,"locked":false,"created":null,"h323_name":"1101","city":null,"email":null,"phone":null,"zip":null},{"address":null,"name":null,"country":null,"password":"****","extension":"1113","sip_id":"[email protected]","sip_name":"23002","user_id":8847075,"locked":false,"created":null,"h323_name":"1102","city":null,"email":null,"phone":null,"zip":null},{"address":null,"name":null,"country":null,"password":"****","extension":"1114","sip_id":"[email protected]","sip_name":"23003","user_id":3680630,"locked":false,"created":null,"h323_name":"1103","city":null,"email":null,"phone":null,"zip":null},{"address":null,"name":null,"country":null,"password":"****","extension":"1115","sip_id":"[email protected]","sip_name":"23004","user_id":136391,"locked":false,"created":null,"h323_name":"1104","city":null,"email":null,"phone":null,"zip":null},{"address":null,"name":null,"country":null,"password":"****","extension":"1116","sip_id":"[email protected]","sip_name":"23005","user_id":5692227,"locked":false,"created":null,"h323_name":"1105","city":null,"email":null,"phone":null,"zip":null},{"address":null,"name":null,"country":null,"password":"****","extension":"1117","sip_id":"[email protected]","sip_name":"23006","user_id":7559026,"locked":false,"created":null,"h323_name":"1106","city":null,"email":null,"phone":null,"zip":null},{"address":null,"name":null,"country":null,"password":"****","extension":"1118","sip_id":"[email protected]","sip_name":"23007","user_id":3226075,"locked":false,"created":null,"h323_name":"1107","city":null,"email":null,"phone":null,"zip":null},{"address":null,"name":null,"country":null,"password":"****","extension":"1119","sip_id":"[email protected]","sip_name":"23008","user_id":6184875,"locked":false,"created":null,"h323_name":"1108","city":null,"email":null,"phone":null,"zip":null},{"address":null,"name":null,"country":null,"password":"****","extension":"1120","sip_id":"[email protected]","sip_name":"23009","user_id":1711112,"locked":false,"created":null,"h323_name":"1109","city":null,"email":null,"phone":null,"zip":null},{"address":null,"name":null,"country":null,"password":"****","extension":"1121","sip_id":"[email protected]","sip_name":"23010","user_id":5383101,"locked":false,"created":null,"h323_name":"1110","city":null,"email":null,"phone":null,"zip":null}]}' 

params = result[result.find('{"'):] 
#print params 
abc = json.loads(params) 

# Here I'm trying to extract just sip_id from the string result using json. 
# I am not able to figure out what went wrong . 
for user_dict in abc['user_account']['sip_id']: 
    print 'usersname : %s' % (user_dict['sip_id']) 
+0

当我至REGx ..它工作正常语法中使用re.findall('(<= \\ “sip_id \\” 使用:\\?“)[A-ZA- Z0-9] + @ [a-zA-Z0-9。] +(?= \\“)',结果) – JJ84

+0

专业提示:使用'from pprint import pprint',然后'pprint(abc)'得到更好地感受你的数据结构是什么样的。 –

回答

1

abc['user_account']应该是一个列表。

列表a=['hello',1,2,'people']有4个元素通过索引a[0]a[3]访问。

字典d={'a':1,'b':2}有键和值。在这种情况下d['a']的值为1,d[b']有2

如果您要访问东西abc['user_account'],类型abc['user_account'][42]。如果你想遍历它

for a in abc['user_account']: 
    print a 
+0

Cool Works现在好了。我尝试过:对于abc ['user_account']中的user_dict: print'usersname:%s'%(user_dict ['sip_id']) – JJ84

+0

对不起,我不擅长编辑这段代码... – JJ84

+0

是否我可以用一行代码提取出sip id:for user_dict in abc ['user_account'] ['sip_id']:print'usersname:%s'%(user_dict ['sip_id']) – JJ84

2

变化

for user_dict in abc['user_account']['sip_id']: 

for user_dict in abc['user_account']: