Нарезка · Шаг 1 из 4
Строки в записи
Выгрузка приходит таблицей: первая строка — названия колонок, дальше данные. Работать с рядами ячеек неудобно — через три шага никто не помнит, что в третьей колонке. Куда удобнее запись, где у значения есть имя. Превратить всю таблицу разом нельзя: в ней миллион строк, и она для того и режется, что целиком никуда не влезает.
Что сделать
Превращайте строки таблицы в записи с именами колонок — по одной, не читая файл целиком.
Что приходит
stroki— поток строк таблицы, каждая — список ячеек; первая — заголовок с названиями колонок
Что вернуть
Генератор: на каждую строку после заголовка — словарь «колонка → ячейка»; короткая строка дополнена пустыми ячейками, длинная обрезана; пустой поток — ничего.
Допишите функцию zapisi в редакторе справа.
Результат верните через return — то, что
напечатано, на проверку не влияет.
В проекте
Утилита отдаёт вашему генератору строки CSV-файла прямо с диска. Дальше записи идут в шаги 2–4 по одной — поэтому файл на миллион строк не попадает в память целиком.
Заголовок ["imya", "gorod"] и строки «Анна, Тверь», «Борис, Омск» дают две записи: {"imya": "Анна", "gorod": "Тверь"} и {"imya": "Борис", "gorod": "Омск"}.
list(zapisi([["imya", "gorod"], ["Анна", "Тверь"], ["Борис", "Омск"]]))
[{'imya': 'Анна', 'gorod': 'Тверь'}, {'imya': 'Борис', 'gorod': 'Омск'}]
Функция принимает поток строк. Каждая строка — список ячеек (строки). Первая строка потока — заголовок, названия колонок. Отдаёт по одной записи на каждую следующую строку: словарь «название колонки → ячейка», в порядке колонок заголовка. Строка короче заголовка дополняется пустыми строками; длиннее — лишние ячейки отбрасываются. Пустой поток не даёт ничего, и ошибки при этом нет. Строки берутся из потока по одной, по мере надобности.
Обсуждение
Вопросов пока нет.
Войдите, чтобы спросить.