Это не будет работать, если вы разделите ввод на слова.
Вместо использования словаря вы можете использовать список, содержащий регулярные выражения, которые соответствуют словам и фразам, которые вы хотите сопоставить, вместе с их сокращениями, и вы вызываете re.sub()
для каждого из них.
Вы должны упорядочить это так, чтобы более длинные совпадения были первыми. В противном случае он заменит account
перед попыткой заменить account takeover
.
Вы должны использовать регулярное выражение, а не обычную строку, чтобы вы могли сопоставить границы слов с \b
. В противном случае оно может сокращать слово, когда оно является частью другого слова, например превратить accounting
в accting
.
Таким образом, код будет выглядеть так:
import re
def simple_library(notes):
notes = notes.lower()
abbreviate_sentence = [
(r"\baccount\s+takeover\b", "ato"),
(r"\baccount\b", "acct")
]
for regexp, replace in abbreviate_sentence:
notes = re.sub(regexp, replace, notes)
return notes.upper()