#python #regex
#python #регулярное выражение
Вопрос:
У меня есть строка, и мне нужно скрыть важные детали. Например,
x='Dear Mr /Ms Shantanu your agr no 1234 is expired on 13/11/2020 with arrears. Pls pay the arrear amount at your nearest branch'
Вывод должен выглядеть примерно так…
Dear Mr /Ms xxxx your agr no xxxx is expired on xx/xx/xxxx with arrears. Pls pay the arrear amount at your nearest branch
Я попробовал следующие 3 инструкции, и это работает так, как ожидалось.
re.sub(r'agr no d ', 'agr no xxxx', x)
re.sub(r'expired on d /d /d ','expired on xx/xx/xxxx', x)
re.sub(r'Mr /Ms w ','Mr /Ms xxxx', x)
Но есть еще несколько шаблонов. У меня есть dict, который мне нужно применить к регулярному выражению.
myreplace= {'agr no d ': 'agr no xxxx', 'expired on d /d /d ':'expired on xx/xx/xxxx', 'Mr /Ms w ':'Mr /Ms xxxx'}
Каков наилучший способ добиться этого?
Комментарии:
1. Я не получил OP!
2. Это может помочь: python.org/dev/peps/pep-0274
3. Простой
for
цикл?
Ответ №1:
Почему бы просто не создать простой список, содержащий регулярное выражение и его замену?
Как насчет этого:
import re
formatting = [[r'agr no d ', 'agr no xxxx'], [r'expired on d /d /d ', 'expired on xx/xx/xxxx'], [r'Mr /Ms w ', 'Mr /Ms xxxx']]
s = 'Dear Mr /Ms Shantanu your agr no 1234 is expired on 13/11/2020 with arrears. Pls pay the arrear amount at your nearest branch'
for regex,substitution in formatting:
s = re.sub(regex, substitution, s)
print(s)
Результат соответствует ожидаемому.
formatting
содержит несколько списков, например: [[регулярное выражение1, подстановка1], [регулярное выражение2, подстановка2], …]