2014-04-15 2 views
0

Мне не повезло, что я пытаюсь разобрать эти данные json, я только забочусь о его небольшом количестве.Пытается разобрать данные JSON с помощью python

данные JSON

{ 
    "timestamp" : 1397555135361, 
    "sets" : { 
     "worldguard.markerset" : { 
      "areas" : { 
       "world_region_name" : { 
        "markup" : false, 
        "desc" : "What I really want.", 
        "weight" : 3, 
        "color" : "#FF0000", 
        "fillopacity" : 0.35, 
        "opacity" : 0.8, 
        "label" : "Region_name", 
        "ytop" : 65.0, 
        "fillcolor" : "#FF0000", 
        "z" : [846.0, 847.0, 847.0, 846.0], 
        "ybottom" : 65.0, 
        "x" : [773.0, 773.0, 774.0, 774.0] 
       } 
      } 
     } 
    } 
} 

Я надеюсь, что я скопировал его правильно, это очень большой файл, и я забочусь только о информации региона, что он имеет.

есть другие части этого json-файла, которые меня не волнуют, поэтому я их не включил. но есть много предметов под «областями», которые меня волнуют. Я просто не могу разобраться, как разбирать их все

import json 
from pprint import pprint 
json_data=open('marker_world.json') 

data = json.load(json_data) 


for item in data["sets"]["worldguard.markerset"]["areas"]: 
    print item 

предметы, которые меня волнуют из каждого региона; desc, label, z, & x.

Это, кажется, не распечатывает все под этой области, как я бы ожидать, что все это я получаю экран из «u'w"»

Я даже не начал пробовать и выбирать только бит из каждого региона, о котором я забочусь. Толкание в правильном направлении было бы здорово, если вы сможете тренироваться, что я делаю неправильно.

+0

Самый простой способ отладить и исправить это - открыть интерактивную оболочку и эксперимент «python». Начните с 'data = json.load (open (...))' и играйте с объектом, пока не получите то, что хотите – slezica

+0

Я сделал, я разработал, как добраться до той части, которую я хотел, я просто не мог работать как сделать цикл for. так что я мог бы получить все данные региона. так что я могу играть с строковыми манипуляциями. – TheDuncan

ответ

1

Вот что вы можете начать с.

Определить список ключей вам нужно от области, а затем перебрать areas, для каждой области получить значение клавиш, которые вы определили:

keys = ['desc', 'label', 'x', 'z'] 
for area_key, area_items in data["sets"]["worldguard.markerset"]["areas"].iteritems(): 
    print area_key 
    for key in keys: 
     print '%s: %s' % (key, area_items[key]) 

принты:

world_region_name 
desc: What I really want. 
label: Region_name 
x: [773.0, 773.0, 774.0, 774.0] 
z: [846.0, 847.0, 847.0, 846.0] 
+0

lol, Wow я был далеко. Благодарю. – TheDuncan

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