Функция 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
✅ 10 TRAINS🆓
• Personal Use License.
#coloringpage#trains#speed#kids
◆═════● PREMIUM ●═════◆
⭐ TRAINS: Coloring Book PDF Ready To Print.
• 40 Trains.
• Test Color Page.
• Print-Ready PDF 8,625x11,250 in.
• PNG 4215 x 5500 px High-quality.
• Remove watermark.
• Commercial Use License.
7.99€5.99€
👉Buy Now🛒
🪁Kites paralyzed operations at Jakarta airport
📰 In Jakarta, kites disrupted the takeoffs and landings of 21 aircraft: planes had to circle back or change airports.
🚄 Similar incidents have already delayed Whoosh high-speed trains 169 times in six months and cause annual accidents on Bali's power grids.
⛔️ The authorities remind the public that kites may only be flown away from airports, railways, and power lines.
#safety#airport#trains@BaliNews
🇬🇧Un incendie dans le nord de Londres provoque de nombreuses perturbations sur les lignes de trains, rapporte Sky News.
Au total, environ 70 pompiers ont été impliqués dans l'extinction de l'incendie dans le quartier de Camden.
#londres#incendie#trains
🇮🇩Le bilan de la collision entre deux trains dans la province de Java occidental en Indonésie s’alourdit à 14 morts et 84 blessés, a rapporté l’agence Antara.
#indonésie#trains#collision
🇮🇩 Au moins 3 personnes ont été tuées et 29 autres blessées dans une collision entre deux trains en Indonésie, rapporte Antara.
#indonésie#trains#collision
🇩🇰 Une collision frontale entre deux trains survenue près du village de Kagerup, au Danemark, a fait dix-sept blessés, dont quatre personnes se trouvent dans un état critique, a rapporté l’agence Ritzau.
#danemark#trains#collision#victimes
Two High-Speed Trains Collided in Southern Spain
At least 39 people have been killed and 24 others seriously injured after two trains collided in southern Spain on Sunday night in what the prime minister, Pedro Sánchez, called “a night of deep pain for our country”.
A high-speed Iryo train travelling from Málaga to Madrid derailed near the municipality of Adamuz in Córdoba province, crossing on to the other track where it hit an oncoming train, Adif, Spain’s rail infrastructure authority, posted on X.
The second train, which was operated by the state rail company, Renfe, also derailed and went down an embankment, authorities said.
The accident happened about 10 minutes after the Iryo left Málaga at 6.40pm (1740 GMT), Adif said.
“Approximately 300 people were on board at the time of the accident,” Iryo said.
“The derailment affected cars six through eight. The Guardia Civil and firefighters are currently working intensively at the scene to evacuate all passengers and have set up a joint emergency response team.
“Iryo deeply regrets the incident, has activated all its emergency protocols, and is collaborating closely with Adif, Renfe, and the relevant authorities to determine the causes and manage the situation as effectively as possible.”
Another witness told the public broadcaster RTVE that one of the carriages of the first train had completely overturned.
An unidentified passenger on the second train – which was going from Madrid to Huelva – told public broadcaster TVE:
“There were people screaming, their bags fell from the shelves. I was travelling to Huelva in the fourth carriage – the last, luckily.”
Television images showed medical crews and fire services at the scene.
Spain’s transport minister, Óscar Puente, said the cause of the accident had yet to be established. Speaking at a press conference at Atocha station in Madrid, he added it was “really strange” that a derailment should have happened on a straight stretch of track. This section of track was renewed in May, he said.
Puente said most of those killed and injured had been in the first two carriages of the second train.
#trains#collided#spain#puente#Iryo
📱American Оbserver - Stay up to date on all important events
🇺🇸