Пример обработки данных в формате Json из файла

Возможно, Вы пишите парсер какого-то сайта и данные из него как правило возвращаются в формате Json. Чтобы получить какую-то информацию, нужна обработка данных в формате Json. Для работы с этим форматом в языке Python предусмотрена библиотека с таким же названием, которую нужно импортировать, что мы и сделаем в 1 строке программы.

Давайте потренируемся сначала на данных, получаемых из файла. Пример формата данных представлен ниже — это список словарей:

[{"manager":{"first_name":"Dasi","last_name":"Ungerer"},"cars":[{"color":"Turquoise","model":"1500","maker":"GMC","year":1995,"price":7717},{"color":"Khaki","model":"100","maker":"Audi","year":1993,"price":3504},{"color":"Crimson","model":"Continental GT","maker":"Bentley","year":2008,"price":8452},{"color":"Fuscia","model":"Trans Sport","maker":"Pontiac","year":1997,"price":10106},{"color":"Crimson","model":"Sierra 3500","maker":"GMC","year":2006,"price":3249},{"color":"Maroon","model":"Trooper","maker":"Isuzu","year":1992,"price":3703},{"color":"Pink","model":"Diamante","maker":"Mitsubishi","year":1993,"price":1356},{"color":"Green","model":"F-Series","maker":"Ford","year":1997,"price":14382},{"color":"Mauv","model":"Bravada","maker":"Oldsmobile","year":1993,"price":9466},{"color":"Goldenrod","model":"Ranger","maker":"Ford","year":2007,"price":12823}]},

Для обработки скачайте файл manager_sales.json по ссылке <файл> и поместите его в каталоге программы. Напишем программу, которая определяет менеджера, принесшего компании наибольшую прибыль.

import json

# загрузим данные из файла в формате json
with open('manager_sales.json', encoding='utf-8') as fl:
    data = json.load(fl)

# создадим и заполним словарь суммарными данными продаж каждого менеджера
res = dict() 
for li in data:
    print(li['manager'])
    print(li['cars'])
    key = li['manager']['first_name'] + ' ' + li['manager']['last_name']
    val_pr = sum([zn['price'] for zn in li['cars']])
    res[key] = val_pr

# выведем продажи каждого менеджера
print('\n', res)

# определим лучшего менеджера
max_pr = 0
max_k = ''
for k, v in res.items():
    if v > max_pr:
        max_pr = v
        max_k = k
#print(max_k, max_pr)
print(f'\nЛучший менеджер {max_k} продал автомобили на {max_pr}$')

Результатом работы программы будет:

{'first_name': 'Gusella', 'last_name': 'Silverwood'}
[{'color': 'Blue', 'model': 'Landaulet', 'maker': 'Maybach', 'year': 2012, 'price': 3102}, {'color': 'Maroon', 'model': 'Phantom', 'maker': 'Rolls-Royce', 'year': 2010, 'price': 4309}, {'color': 'Blue', 'model': 'xB', 'maker': 'Scion', 'year': 2011, 'price': 3569}, {'color': 'Pink', 'model': 'Explorer Sport', 'maker': 'Ford', 'year': 2002, 'price': 12442}, {'color': 'Maroon', 'model': 'Envoy', 'maker': 'GMC', 'year': 1998, 'price': 634}, {'color': 'Puce', 'model': 'IS', 'maker': 'Lexus', 'year': 2003, 'price': 1868}, {'color': 'Blue', 'model': 'S4', 'maker': 'Audi', 'year': 2013, 'price': 8883}, {'color': 'Red', 'model': 'Neon', 'maker': 'Dodge', 'year': 2002, 'price': 10222}, {'color': 'Khaki', 'model': '525', 'maker': 'BMW', 'year': 2001, 'price': 910}, {'color': 'Fuscia', 'model': 'Vandura G2500', 'maker': 'GMC', 'year': 1995, 'price': 7847}, {'color': 'Turquoise', 'model': 'Century', 'maker': 'Buick', 'year': 1988, 'price': 10300}, {'color': 'Purple', 'model': '3 Series', 'maker': 'BMW', 'year': 2003, 'price': 14571}]

 {'Dasi Ungerer': 74758, 'Wendell Fortescue': 73128, 'Ida Niesegen': 84975, 'Clementine Stretton': 54656, 'Sharity Devonside': 103690, 'Forbes Chritchlow': 102699, 'Karen Pigdon': 87928, 'Lucia Measham': 96852, 'Gusella Silverwood': 78657, 'Blondy Courson': 96866}

Лучший менеджер Sharity Devonside продал автомобили на 103690$

Всё не так сложно, как представляется на первый взгляд ! В статье «Парсим сайт на Python» попробуем распарсить страницу статического сайта.

Обновлено: 19.10.2022 — 01:39

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *