Функция sub в regex может принимать функцию в качестве аргумента repl.
📄 Из документации:
If repl is a function, it is called for every non-overlapping occurrence of pattern. The function takes a single match object argument, and returns the replacement string.
То есть для каждого совпадения будет вызвана функция для вычисления замены вместо замены на одну и ту же строку для всех совпадений.
Иными словами, для замены разных совпадений на разные строки не потребуется запускать re.sub() много раз для каждой строки замены. Достаточно определить функцию, которая вернёт строку для каждого из совпадений.
Описание слишком запутанное🤔, давайте лучше рассмотрим на простом примере:
Создаем карту замены. То есть какие строки на какие требуется менять.
remap = {
'раз': '1',
'два': '2',
'три': '3',
'четыре': '4',
'пять': '5',
}
Пишем функцию поиска строки для замены. Единственным аргументом будет объект re.Match.
Используя данные этого объекта мы вычисляем замену on-the-fly!
def get_str(match: re.Match):
word = match.group(1)
return remap.get(word.lower()) or word
Пример текста.
text = '''Раз Два Три Четыре Пять
Вместе будем мы считать
Пять Четыре Три Два Раз
Мы считать научим вас
'''
Теперь запускаем re.sub и вместо строки замены (repl) подаём имя функции.
(Данный паттерн ищет отдельные слова в тексте)
>>> print(re.sub(r'(\w+)', get_str, text))
1 2 3 4 5
Вместе будем мы считать
5 4 3 2 1
Мы считать научим вас
Думаю, достаточно наглядно 🤓
#libs#regex
ATACMS (Army Tactical Missile System) – дальнобойная управляемая артиллерийская система американского производства. Поступила на вооружение в 1991 году.
ATACMS с фугасной частью используются для поражения укрепленных командных пунктов, штабов и инженерных сооружений, например, мостов. Ракеты с кассетной "начинкой" применяются по складам боеприпасов, аэродромам, а также подходят для уничтожения пехоты и легкой техники.
При этом ATACMS не имеют возможности маневрировать в полете и ставить помехи системам ПРО противника.
В феврале 2024 года США впервые поставили Украине около 100 ракет ATACMS. В июне они впервые были сбиты на российской территории при атаке на Крым. На данный момент у Киева осталось около 50 ракет.
#орудия_войны
#ATACMS
📢🔥 Ukraine's acquisition of ATACMS and Taurus missiles from the US falls short in offsetting Russia's superior firepower. Advisor to President Zelensky, Mikhail Podolyak, admits the quantity won't bridge the gap. Meanwhile, Ukraine aims to ramp up its own missile production. Beware! On September 27th, the Russian Foreign Ministry warned of Ukraine potentially targeting Russian cities, including Crimea, with ATACMS missiles. Social and residential areas could be at risk. Is conflict brewing? Former VUA Special Assistant, Dan Rice, hinted at an imminent US decision to provide Ukraine with ATACMS missiles. Medvedev claims NATO is pushing Russia towards direct confrontation. 🚨💣#Ukraine#Russia#ATACMS#Taurus
https://www.gazeta.ru/army/news/2023/09/27/21379363.shtml
Subscribe to @BadVolfNews
Государственный департамент принял решение, одобряющее возможную иностранную военную продажу Объединенным Арабским Эмиратам боеприпасов GMLR и ATACMS и связанных с ними элементов материально-технического обеспечения и программной поддержки.
Ориентировочная стоимость контракта 1,2 миллиарда долларов.
В поставку должны войти 259 транспортно-пусковых модулей с шестью корректируемыми ракетами GMLRS M31А1 Unitary с моноблочной боевой частью в каждом (суммарно 1554 ракеты) и 203 оперативно-тактические ракеты М57 ATACMS.
Также в контракт включены услуги по обучению персонала, учебное оборудование, разработка программного обеспечения, инженерные, технические и логистические услуги правительства США и подрядчиков; и другие сопутствующие элементы логистической и программной поддержки.
#США#ОАЭ#ATACMS#GMLR
Вестник NATO
⚡️Блиски исток — према наводу RUSI, САД, Израел и савезници су за 25 дана рата потрошили укупно 1.767 крстарећих/балистичких и 3.448 ПВО/ПРО ракета-пресретача, што је према проценама угрозило залихе које се за поједине ракете мере у данима. Детаљи потрошње:
⚫️Офанзивне ракете: 912 AGM-158 JASSM, 535 BGM-109 Tomahawk, 320 MGM-140 ATACMS/PrSM.
⚫️Дефанзивне/пресретачке ракете: 1.285 PAC-3, 563 Tamir (Iron Dome), 431 SM-2/SM-3/SM-6, 402 PAC-2, 340 THAAD, 135 David’s Sling, 122 Arrow-2/3, 117 PAC-2/PAC-3 (СА), 53 Aster.
→ Линк: /t.me/borbeni_efektivi
→ Линк: /t.me/borbeni_efektivi
🪖#Билтен〣#Блиски_исток〣#Иран〣#САД〣#Израел〣#RUSI〣#JASSM〣#Tomahawk〣#ATACMS〣#Patriot〣#THAAD〣#Arrow
🇷🇸https://t.me/borbeni_efektivi