Я пытаюсь разобрать изменения данных JSON, однако данные JSON немного сложны и меняют каждую итерацию.Анализ и изменение данных JSON в Python, несколько уровней глубоких
Данные JSON анализируются внутри цикла, поэтому каждый раз, когда цикл работает, данные json отличаются. Я сейчас сосредоточен на данных об образовании.
JSON DATA:
Сначала один может выглядеть следующим образом:
{u'gender': u'female', u'id': u'15394'}
Следующая один может быть:
{
u'gender': u'male', u'birthday': u'12/10/1983', u'location': {u'id': '12', u'name': u'Mexico City, Mexico'}, u'hometown': {u'id': u'19', u'name': u'Mexico City, Mexico'},
u'education': [
{
u'school': {u'id': u'22', u'name': u'Institut Saint Dominique de Rome'},
u'type': u'High School',
u'year': {u'id': u'33', u'name': u'2002'}
},
{
u'school': {u'id': u'44', u'name': u'Instituto Cumbres'},
u'type': u'High School',
u'year': {u'id': u'55', u'name': u'1999'}
},
{
u'school': {u'id': u'66', u'name': u'Chantemerle International School'},
u'type': u'High School',
u'year': {u'id': u'77', u'name': u'1998'}
},
{
u'school': {u'id': u'88', u'name': u'Columbia University'},
u'type': u'College',
u'concentration':
[{u'id': u'91', u'name': u'Economics'},
{u'id': u'92', u'name': u'Film Studies'}]
}
],
u'id': u'100384'}
Я пытаюсь вернуть все значения для школы имя, школьный номер и тип школы, поэтому по существу я хочу [education][school][id]
, [education][school][name]
, [education][school][type]
в одной строке , Тем не менее, каждый человек имеет различное количество школ, перечисленных, а также разные типы школ или вообще нет школ. Я хочу вернуть каждую школу со своим именем, идентификатором и типом в новой строке в моем существующем цикле.
ИДЕАЛ ВЫХОД:
1 34 Boston Latin School High School
1 26 Harvard University College
1 22 University of Michigan Graduate School
Тот, что в данном случае, относится к friend_id, который я уже создан, чтобы добавить в список в качестве первого элемента в каждом цикле.
Я пробовал:
friend_data = response.read()
friend_json = json.loads(friend_data)
#This below is inside a loop pulling data for each friend:
try:
for school_id in friend_json['education']:
school_id = school_id['school']['id']
friendedu.append(school_id)
for school_name in friend_json['education']:
school_name = school_name['school']['name']
friendedu.append(school_name)
for school_type in friend_json['education']:
school_type = school_type['type']
friendedu.append(school_type)
except:
school_id = "NULL"
печати friendedu writer.writerow (friendedu)
ТОКА ВЫВОД:
[u'22', u'44', u'66', u'88', u'Institut Saint Dominique de Rome', u'Instituto Cumbres', u'Chantemerle International School', u'Columbia University', u'High School', u'High School', u'High School', u'College']
Этот вывод просто список значений, которые он потянул, вместо этого я пытаюсь организовать вывод, как показано выше. Я думаю, что, возможно, требуется еще один цикл for-loop, поскольку для одного человека я хочу, чтобы каждая школа была на своей собственной линии. Сейчас список friendedu
добавляет всю информацию об образовании для одного человека в каждую строку списка. Я хочу, чтобы каждый элемент образования появился в новой строке, а затем перешел к следующему человеку и продолжал писать строки для следующего человека.
Редактирование выше, похоже, решило проблему, спасибо – kegewe
@kegewe Отлично, если бы ответ сработал для вас, не могли бы вы принять его в качестве решения? – Cam