Добавить подтверждение для поиска и замены с помощью регулярных выражений в Python

У меня есть небольшой скрипт на Python, который просматривает кучу файлов и в каждом файле применяет несколько регулярных выражений. Я хотел бы добавить шаг подтверждения, на котором показывается старый и новый текст. Есть ли эффективный способ сделать это. Прямо сейчас, в строке, я делаю .search., затем .sub в сопоставленном тексте и если пользователь подтверждает, я вставляю новый текст в исходную строку (по индексам).

1 ответ

Решение

Вы можете использовать re.sub с обратным вызовом, который запрашивает подтверждение пользователя:
http://docs.python.org/2/library/re.html

text = 'This is a dummy dummy text'

def callback(m):
    string = m.group()
    subst = string.upper()
    start = m.start()
    question = 'subst {:s} at pos {:d}:'.format(string, start)
    ans = raw_input(question)
    if ans[0] in 'Yy':
        return subst
    else:
        return string

print re.sub(r'\bdummy\b', callback, text)

какая печать

subst dummy at pos 10:n
subst dummy at pos 16:y
This is a dummy DUMMY text
Другие вопросы по тегам