Чтение и запись CSV, парсинг JSON, контекстный менеджер with open — повседневные задачи аналитика. На собеседовании могут попросить прочитать CSV без pandas, распарсить вложенный JSON или объяснить разницу между json.load и json.loads. Эти навыки показывают, что кандидат не привязан к одной библиотеке.
По умолчанию `csv.reader` ожидает запятую как разделитель. Если файл разделён `;`, нужно явно указать `delimiter=";"`. Это особенно важно для аналитических экспортов из разных систем (например, CRM/ERP), где формат CSV может отличаться.
Подробный разбор →`json.loads(text)` разбирает JSON-текст (строку) и возвращает соответствующий Python-объект: словарь, список, числа и т.д. В данном примере JSON-объект превращается в `dict`, а значение `true` становится `True`. Это отличается от `json.dumps()`, который делает обратное — превращает Python-объект в JSON-строку.
Подробный разбор →`csv.DictReader(f)` использует первую строку файла как заголовок и затем возвращает каждую строку как словарь. Ключи — названия столбцов, а значения — строки из соответствующих ячеек. Это удобно в аналитике, когда нужно обращаться к полям по имени (например, `row["price"]`), а не по индексу.
Подробный разбор →Кодировка по умолчанию зависит от ОС и окружения, поэтому чтение файла с кириллицей без указания `encoding` может привести к `UnicodeDecodeError`. На практике для данных и конфигов чаще всего подходит `encoding="utf-8"`. Также важно использовать режим `r` для чтения: режимы `w` и `a` предназначены для записи/добавления и не подходят для чтения через `f.read()`.
Подробный разбор →`f.read()` читает данные до конца и сдвигает позицию чтения. Повторный вызов `f.read()` сразу после первого обычно вернёт пустую строку, потому что читать больше нечего. Если нужно прочитать файл заново, переустановите позицию через `f.seek(0)` или откройте файл снова (желательно через `with open(...)`).
Подробный разбор →В приложении — таймер, прогресс, стрики и 1700+ вопросов по всем темам.
Тренировать Python в Telegram