re.findall(pattern, text)Находит все непересекающиеся совпадения.
Используй raw-строки:r'\d+'.Файл не становится данными сам: сначала выясни формат, разделитель, кодировку и нужный результат.
Выбирай инструмент по грамматике данных: строковые методы для простого формата, re для шаблона, csv для таблицы, json для структуры.
re.findall(pattern, text)Находит все непересекающиеся совпадения.
Используй raw-строки:r'\d+'.re.fullmatch(pattern, text)Проверяет, что шаблон покрывает всю строку.
Надежнее, чем поиск части строки для валидации.fnmatch.fnmatch(name, '*.csv')Сопоставляет имя файла с простым glob-шаблоном.
Это не регулярное выражение и не читает каталог.re не всегда нуженДля разделения по пробелу или запятой чаще понятнее split.
import re
text = "id=12; id=7"
print(re.findall(r"id=(\d+)", text))Группа в скобках возвращает только числа после id=. Без группы результатом были бы целые совпавшие фрагменты.
| Формат | Что хранит | Инструмент |
|---|---|---|
| Обычный текст | Строки, числа, слова в условленном порядке. | open(...), цикл по файлу, split. |
| CSV | Табличные строки с разделителем и, возможно, кавычками. | csv.reader или csv.DictReader. |
| JSON | Вложенные списки, словари, числа, строки и булевы значения. | json.load, не eval. |
Не разбирай внешний JSON через eval. json.load читает только данные нужного формата, а eval может выполнить строку как код.
В этой главе поле виртуального input.txt ведет себя как файл с заданным именем. Код может открыть его обычной конструкцией open('input.txt', encoding='utf-8'). Это учебная имитация: программа изолирована в Worker и не получает доступа к файлам компьютера.
import json
with open("input.json", encoding="utf-8") as source:
data = json.load(source)
print(data["name"])json.load получает поток файла и возвращает структуру Python. Перед чтением программа должна знать точное имя виртуального файла.
Какой модуль правильно прочитает таблицу CSV, в ячейках которой могут быть запятые и кавычки?