Функция 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
#Anunț
Au început îscrierile pentru Campionatul Mondial de Limba Rusă pentru Străini 2025.
Campionatul este un concurs internațional și un eveniment educațional care reunește echipe din întreaga lume pentru a-și demonstra cunoștințele de limba rusă, abilitatea de a-și apăra punctul de vedere, de a participa la discuții, de a rezolva probleme logice, de a lucra în echipă și de a-și demonstra creativitatea.
ℹ️ Pentru a participa, trebuie să formați o echipă de 5 persoane cu vârste cuprinse între 16 și 22 de ani, fiecare membru având cel puțin nivelul A2 de competență în limba rusă. Echipa trebuie să aibă și un antrenor (cu vârsta de cel puțin 21 de ani) care să ghideze și să sprijine echipa pe parcursul tuturor etapelor competiției.
Anul trecut, Campionatul Mondial de Limba Rusă pentru Străini a reunit peste 2.000 de participanți din întreaga lume, inclusiv din țări precum India, China, Grecia, Vietnam și diverse națiuni din America Latină. Finala s-a desfășurat la „Țarskoie Selo”, echipa din Kazahstan ocupând primul loc.
🌐 În 2025, echipele vor fi grupate pe regiuni geografice: statele postsovietice, Africa, Asia, America și Europa. Primele zece echipe care vor trece cu succes de etapa online vor fi invitate la runda finală de la Moscova, Rusia, care va avea loc în decembrie 2025. Toate cheltuielile de călătorie vor fi acoperite de organizatori.
Înscrierile sunt deschise până la 15 septembrie 2025. Participarea este gratuită.
🔎Aflați mai multe despre campionat și înscrieți-vă!
#Anunț
🗓 Combaterea fraudelor pe internet, precum și asigurarea securității infrastructurii informatice critice împotriva atacurilor teroriste și a diversiunilor tehnologice vor deveni unele dintre subiectele centrale de discuție în cadrul celei de-a 13-a Reuniuni Internaționale a Înalților Reprezentanți Responsabili cu Problemele de Securitate, care va avea loc la Moscova, în perioada 27–29 mai 2025, la Centrul Național „Rossia”.
Provocările și amenințările din spațiul informațional, precum și căile de depășire a acestora vor fi discutate de consilierii pentru securitate națională și coordonatorii serviciilor speciale din peste 100 de state, în cadrul unei mese rotunde speciale, cu participarea experților de profil.
Aceasta va oferi posibilitatea de a aborda cele mai stringente probleme din domeniul securității informaționale într-o atmosferă de cooperare internațională strânsă și bazată pe încredere.
ℹ Forumul se va desfășura sub conducerea Secretarului Consiliului de Securitate al Federației Ruse, Serghei Șoigu. Au fost trimise invitații de participare către peste 150 de state din Sudul și Estul Global, țările CSI, OTSC, UEEA, OCS, precum și către conducerea a peste 20 de organizații internaționale.
Delegații ale țărilor membre #BRICS, #ASEAN, Uniunea Africană, Liga Statelor Arabe, #OCS, #CSI, #OTSC și alte organizații internaționale și-au confirmat deja participarea. Până în prezent, peste 125 de delegații din mai mult de 100 de țări și-au confirmat deja participarea la Reuniunea.
Pe ordinea de zi a forumului se vor regăsi subiecte privind cooperarea internațională în domeniul securității. În special, va fi abordată tema formării unei noi arhitecturi de securitate echitabile și indivizibile, care să corespundă realităților contemporane.