Регулярные выражения: ограничения. Разбор строк

Домашнее задание

  1. {i} Прочитать с чем знакомят на Google-упражнениях по теме «регулярные выражения в Python». Правда, у нас не хуже? ;)

  2. {i} Прочитать о модификаторах регулярного выражения в документации. Для решения может понадобиться многострочный режим (re.MULTILINE) и/или режим, при котором '.' может сопоставляться с переводом строки (re.DOTALL)

  3. В некоторой программе на Python у всех идентификаторов, начинающихся с большой буквы (например ABc), окружить эту букву подчёркиваниями (_A_Bc). Полученная программа должна работать как раньше (в том числе и ваша собственная программа)!

    • Не забыть о None, True, False — при их подмене программа не заработает

    • Не забыть о строках (2 вида обычных и 2 вида многострочных) и комментариях, внутри которых заменять не надо
    • … вдруг что-то ещё не заработает? :)

    • {i} Задача решается активным использованием регулярных выражений, но только при условии, что в комментариях не встречаются строковые конструкции. Почему?

  4. Псевдографика. Вводится таблица шириной в 20 символов, границы которой обозначены символами +, - и |:

    •       +------+-----------+
            |   QQ |   QkrQ    |
            +------+           |
            |      |   IDDQD   |
            +------+-----------+

      Преобразовать её в таблицу, границы которой заданы псевдографикой: ─ │ ┌ ┐ └ ┘ ├ ┤ ┬ ┴ ┼ (если эти символы видно, значит у вас установлен правильный шрифт; можно отсюда скопировать в программу):

            ┌──────┬───────────┐
            │   QQ │   QkrQ    │
            ├──────┤           │
            │      │   IDDQD   │
            └──────┴───────────┘

      Предполагается использовать re.DOTALL и пре/постпросмотр. /!\ Сколько '.' в режиме re.DOTALL занимает перевод строки? Не забывайте перекодировать в unicode.

  5. Упражнение от Google (по наводке Ray). Там надо предварительно скачать и разархивировать файл с несколькими HTML-ями. Обратите внимание, что это не олимпиадная задача: что и как делать, ясно заранее (даже РВ уже написаны), а вот попрограммировать придётся.

Условные обозначения


CategoryClass CategoryVmsh

LecturesVMSH/2012-02-29 (последним исправлял пользователь Ray 2012-03-10 19:53:48)