Вычитка · Шаг 1 из 4
Правила из файла
Правила вычитки меняются чаще, чем программа: сегодня ловим два пробела, завтра дефис вместо тире, послезавтра «в течении» вместо «в течение». Держать их в коде значит звать программиста каждый раз, поэтому они лежат в обычном текстовом файле, который правит сам корректор.
Что сделать
Прочитайте правила вычитки из файла, который правит сам корректор.
Что приходит
stroki— строки файла:шаблон | сообщениеилишаблон | сообщение | замена
Что вернуть
Список кортежей (скомпилированный шаблон, сообщение, замена); черта одна — замена None; пустые строки, #, негодные правила пропущены.
Допишите функцию sobrat_pravila в редакторе справа.
Результат верните через return — то, что
напечатано, на проверку не влияет.
В проекте
Утилита читает этой функцией файл правил, который правит сам корректор, или правила по умолчанию. Решите шаг — и правила можно будет менять, не трогая программу.
opisanie = ["# правила вычитки", "", r"\s{2,} | два пробела подряд"]
sobrannye = sobrat_pravila(opisanie)
[(shablon.pattern, soobshchenie, zamena) for shablon, soobshchenie, zamena in sobrannye]
[('\\s{2,}', 'два пробела подряд', None)]
Функция принимает поток строк описания правил.
Строка правила выглядит так: шаблон, вертикальная черта, сообщение, и может быть ещё одна черта и замена. Возвращает список правил — по кортежу из трёх: готовый шаблон (скомпилированный), сообщение (строка), замена (строка или None, если замены нет). Пробелы вокруг частей убираются. Замена есть тогда, когда в строке две черты, и тогда она берётся как есть, даже если пустая: пустая замена означает «заменить на ничего». Если черта одна, замены нет — в кортеже None.
Пропускаются: пустые строки, строки, начинающиеся с решётки, строки без черты, строки с пустым шаблоном или пустым сообщением, и строки, в которых шаблон не компилируется. Порядок правил сохраняется.
Обсуждение
Вопросов пока нет.
Войдите, чтобы спросить.