Документы по шаблону · Шаг 2 из 4
Чего не хватает в строке
Таблицу клиентов Нина Петровна ведёт в Excel и выгружает в CSV. В таблице бывает всё: столбец назвали «fio » с пробелом, у половины клиентов не заполнена сумма, а в конце живут столбцы, о которых шаблон не знает. Договор без суммы хуже, чем никакого договора.
Что сделать
Сверьте строку таблицы с полями шаблона: каких столбцов нет вовсе, какие пусты и какие шаблону не нужны.
Что приходит
polya— список полей шаблона, как его вернул шаг 1:["fio", "summa"]stroka— строка таблицы словарём «столбец → значение», как её даётcsv.DictReader; у короткой строки значение бываетNone
Что вернуть
Словарь {"net": […], "pusto": […], "lishnie": […]} — три списка имён; всё в порядке — три пустых списка.
Допишите функцию proverit_stroku в редакторе справа.
Результат верните через return — то, что
напечатано, на проверку не влияет.
В проекте
Программа проверяет этой функцией каждую строку таблицы. Строку, где net или pusto не пусты, она не заполняет, а называет человеку: «Строка 5: пусто — summa». Про лишние столбцы говорит один раз, в начале.
polya = ["fio", "nomer", "summa"]
stroka = {"nomer": "17", "fio": "Иванов И. И.", "summa": "", "telefon": "+7 900 000-00-00"}
proverit_stroku(polya, stroka)
{'net': [], 'pusto': ['summa'], 'lishnie': ['telefon']}
net— поля шаблона, которых нет среди ключей строки, в порядкеpolya.pusto— поля, которые в строке есть, но значение пустое:"", одни пробелы илиNone(такcsv.DictReaderзаполняет строку, в которой значений меньше, чем столбцов). Порядок — как вpolya.lishnie— ключи строки, которых нет среди полей шаблона, в том порядке, в каком они идут в строке, то есть слева направо, как столбцы в таблице.
Поле попадает только в один из списков: нет столбца — значит, net, а не pusto.
Обсуждение
Вопросов пока нет.
Войдите, чтобы спросить.