Я использую следующий код для множественных замен слов в строке:
pattern = re.compile(r'\b(' + '|'.join(re.escape(key) for key in abbreviationsDict().keys()) + r')\W', flags=re.I)
s = pattern.sub(lambda x: abbreviationsDict()[x.group(1)] + ' ', s)
Функция со словарем:
def abbreviationsDict():
return {'ref.': 'reference', 'ref:': 'reference', 'approx.': 'approximately', 'no.': '', 'nos.': ''}
А для предложения s = "Variation of Condition on planning application Ref: CB/15/03633/FULL dated 30/11/2015: Condition 9"
я получаю ошибку:
s = pattern.sub(lambda x: abbreviationsDict()[x.group(1)] + ' ', s)
KeyError: 'Ref:'
Это работает, когда я строчную s
переменную, но я получаю строчные результаты.Что я делаю не так с этим флагом, чтобы он не работал должным образом?