Функция 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
⭕️ «Aunque ahora llegue un grupo a #Damasco, se alborocen, bailen, ataquen las casas de la gente, llegue el régimen sionista a bombardear, envíe tanques… las cosas no quedarán así. Los jóvenes sirios se alzarán y superarán esta situación…» (11/12/2024).
🔗 LEER 👉spanish.khamenei.ir/news/6317
Sigan el canal en Telegram del Ayatolá Jameneí 👉@khamenei_es
KHAMENEI.IR | 𝕏 | Facebook| TikTok
Continua il processo di legittimazione e riconoscimento internazionale del nuovo regime in #Siria. La Banca Islamica per lo Sviluppo riattiva l'adesione di #Damasco, rimasta sospesa per anni durante la dittatura.
https://x.com/SavinoBalzano/status/1945792017935581675?t=qHus1GEemsY8u81IW-FBmQ&s=19
Adesso che #Israele ha deciso di bombardare persino la #Siria, cosa ci racconterete stavolta?
La storia dell’aggredito e dell’aggressore? No.
Il diritto alla difesa di #Netanyahu? No.
Che #Damasco stava preparando l’atomica? Nemmeno.
Questa è davvero complicata. Infatti, mi pare si stia preferendo la solita strategia: il silenzio.
Intanto, a #Gaza continua a consumarsi – giorno dopo giorno – un crimine che macchierà la nostra coscienza.
Per sempre.
#BattitoriLiberi, dal lunedì al venerdì, dalle 17 su #RadioCusanoCampus.
Negli ultimi giorni ad #Aleppo, in #Siria, si sono verificati duri scontri tra le forze legate al governo centrale e diverse formazioni paramilitari vicine alle Forze Democratiche Siriane (#SDF).
Oggi, dopo una serie di incontri tenuti a #Damasco tra i rappresentanti delle parti coinvolte, è entrata in vigore una nuova tregua. La mia analisi per le libere frequenze di RadioBlackout
https://radioblackout.org/2025/10/aleppo-dopo-gli-scontri-tregua-e-prospettive-in-siria/
Diverse fonti confermano che l'accordo sul #petrolio tra #Damasco e #Rojava sia stato raggiunto e dal nord-est al governo centrale è partita la prima ondata da 5 mila barili di petrolio grezzo al giorno.
#MazlumKobani, Comandante generale delle Forze Democratiche Siriane, #SDF; "Abbiamo bisogno di fare una road map insieme al governo siriano. Agiremo secondo i nostri principi. Contiamo su una #Siria dove tutte le persone vivranno in modo equo. Sosteniamo #Damasco e l'unità nazionale. Non vogliamo far parte della nuova Siria come una sorta di quota ma in pieno partnership. In quest'ottica siamo per integrarci con le nostre forze e istituzioni nel nuovo Stato siriano. Tutte le risorse e ricchezze del Paese devono essere condivise in modo equo".
Il Presidente siriano vola negli #USA mentre in #Siria scattano oltre 70 arresti nelle operazioni anti-#ISIS. Si attende l’adesione di #Damasco alla coalizione internazionale. Secondo #Reuters, il Presidente è stato rimosso dalla lista dei terroristi ricercati.
#Turchia: #EkremImamoglu, il Sindaco di #Istanbul e il Presidente dell'Unione dei Comuni, #TBB; "Il Prefetto di #Damasco ha annullato la nostra visita dicendo che prima deve ricevere il Presidente della Repubblica".
Dopo #IbrahimKalin, il capo dei servizi segreti, #HakanFidan, il Ministro degli Esteri ora si parla anche della visita del Presidente della Repubblica di #Turchia a #Damasco in #Siria, forse questo venerdì il 27.
L'inviato speciale degli #USA per la #Siria, #TomBarrack: "Una nazione, un popolo, un esercito, una Siria. Le Forze Democratiche Siriane (#SDF#Rojava) sono lente nell'accettare, negoziare e procedere in questa direzione. C'è solo una strada e quella strada è #Damasco".