← Вернуться к карте тем
Alterna · глава 41 · страница 41.3

Текст, данные и виртуальные файлы

Файл не становится данными сам: сначала выясни формат, разделитель, кодировку и нужный результат.

Выбирай инструмент по грамматике данных: строковые методы для простого формата, re для шаблона, csv для таблицы, json для структуры.

текст и файлы10-11 классЕГЭ: обработка файлов
01

Регулярные выражения и шаблоны имен

re.findall(pattern, text)

Находит все непересекающиеся совпадения.

Используй raw-строки: r'\d+'.
re.fullmatch(pattern, text)

Проверяет, что шаблон покрывает всю строку.

Надежнее, чем поиск части строки для валидации.
fnmatch.fnmatch(name, '*.csv')

Сопоставляет имя файла с простым glob-шаблоном.

Это не регулярное выражение и не читает каталог.
re не всегда нужен

Для разделения по пробелу или запятой чаще понятнее split.

Сложный шаблон не улучшает простой формат.
import re
    
02

CSV и JSON: формат задает парсер

ФорматЧто хранитИнструмент
Обычный текстСтроки, числа, слова в условленном порядке.open(...), цикл по файлу, split.
CSVТабличные строки с разделителем и, возможно, кавычками.csv.reader или csv.DictReader.
JSONВложенные списки, словари, числа, строки и булевы значения.json.load, не eval.
Безопасность

Не разбирай внешний JSON через eval. json.load читает только данные нужного формата, а eval может выполнить строку как код.

03

Виртуальный файл в тренажере

В этой главе поле виртуального input.txt ведет себя как файл с заданным именем. Код может открыть его обычной конструкцией open('input.txt', encoding='utf-8'). Это учебная имитация: программа изолирована в Worker и не получает доступа к файлам компьютера.

import json
    
04

Быстрая проверка

Какой модуль правильно прочитает таблицу CSV, в ячейках которой могут быть запятые и кавычки?