CSV и JSON · 15 из 15
Выгрузка по-русски
В кофейне у Веры две кассы. Старая выгружает продажи как положено: поля через запятую, копейки через точку. Новая — «по-русски», как
Excel: поля через точку с запятой, копейки через запятую. А бариста пишут в названиях что хотят — Раф "Лаванда"; большой или примечание с переводом строки, — и касса честно берёт такие поля в кавычки. К тому же столбцы у касс стоят в разном порядке. Разбор нужен один на обе — и такой, что не ломается о кавычки.
Что сделать
Разберите выгрузку любой из двух касс в записи о продажах; строки, которые не разбираются, пропустите и сосчитайте.
Что приходит
tekst— выгрузка целиком, строкой; первая строка — заголовок
Что вернуть
Пару (записи, пропущено): записи — словари {"poziciya", "cena", "kolichestvo"} по порядку, пропущено — сколько строк не разобралось.
Допишите функцию razobrat_vygruzku в редакторе справа.
Результат верните через return — то, что
напечатано, на проверку не влияет.
Выгрузка новой кассы "позиция;цена;количество\nКапучино;250;2\nЛатте;270;1\n" даёт две записи: {"poziciya": "Капучино", "cena": 250.0, "kolichestvo": 2} и латте; пропущено 0.
razobrat_vygruzku("позиция;цена;количество\nКапучино;250;2\nЛатте;270;1\n")
([{'poziciya': 'Капучино', 'cena': 250.0, 'kolichestvo': 2}, {'poziciya': 'Латте', 'cena': 270.0, 'kolichestvo': 1}], 0)
Первая строка — заголовок: среди столбцов есть позиция, цена и количество, в любом порядке; бывают и другие столбцы — они не нужны. Разделитель — ;, если он есть в строке заголовка, иначе ,.
Поля бывают в двойных кавычках по правилам CSV: внутри них может стоять разделитель, перевод строки и сама кавычка, удвоенная ("").
Цена — дробное число: в выгрузке с ; дробная часть через запятую (250,50), с , — через точку (250.50). Количество — целое. Пробелы по краям полей отбрасываются.
Запись — словарь {"poziciya": строка, "cena": дробное, "kolichestvo": целое}. Пустые строки пропускаются молча и не считаются. Строка, где не хватает нужного поля или цена либо количество не разбираются, пропускается и считается в пропущено. Пустая выгрузка — ([], 0).
Обсуждение
Вопросов пока нет.
Войдите, чтобы спросить.