Функция 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
Indian Railways has officially issued the Gazette Notification for operationalizing the new South Coast Railway Zone.
🔹 Divisions included:
• Visakhapatnam
• Vijayawada
• Guntur
• Guntakal
#Railways
South Central #Railways seeks ~1,125 acres in Telangana for 4 mega coaching terminals around Hyderabad—sites at Dabilpur (250 acres), Nagulapalli (325), Jukkal (300) and Cherlapalli expansion (250). Plan aims to decongest Secunderabad/Hyderabad/Kacheguda hubs.
Indian Railways Approves ₹895.30 Crore Projects for Power System Upgradation and Bridge Infrastructure
₹671.72 Cr Kolkata Metro Upgrade with 7 New Traction Substations and Power System Augmentation from 11KV to 33 KV for Higher Frequency & Capacity Expansion
Approvals to Pave Way for 2.5-Minute Metro Headway Upgrade from Existing 5-Minute Operations, Boosting Line Capacity to Meet Rising Passenger Demand
₹223.58 Cr Adra Bridge Project to Strengthen Critical Freight Route and Industrial Connectivity
#Railways
«Узтемирйулконтейнер» преобразовался в «Темирйулкарго»🇺🇿🚆
Не только новое название, но и новые услуги:
• по управлению грузоперевозками «от двери до двери»
• по формированию логистических центров и терминалов
• по созданию логистических цепочек поставок грузов с функцией оперирования мультимодальными логистическими терминалами за рубежом
Очень интересно, что из этого получится🚂
#UZBEKISTAN#RAILWAYS
Sikkim’s first railway station Rangpo Terminal takes shape on the Sivok Rangpo line 🚄🇮🇳
▪️ B+G+5 with local Architecture on 16.5 acres
▪️ Cost : ₹335+ Cr
▪️ Promoter : Northeast Frontier Railway Division
▪️ Contractor : IRCON International Limited
▪️ Status : Under Construction
#Railways#Infra
Railways has set a target to complete the Detailed Project Reports (DPRs) for three bullet train corridors by March 2027. These include the Hyderabad-Chennai, Hyderabad-Bengaluru and Patna-Siliguri.
#Railways#Infra
#Railways Minister Ashwini Vaishnaw inaugurates Aditya, BEML’s self reliant high speed bullet train plant in Bengaluru 🚄🇮🇳
The facility will build indigenous B28 trains and future B35 next gen sets, boosting Bharat’s push for advanced, homegrown high speed rail. #aatmarnirbharbharat
Ashvini Vaishnaw:
India’s Aatmanirbhar bullet train B28 is being developed with manufacturing at BEML’s Aditya plant equipped with advanced, high precision machines, including robotic laser welding systems. 🚄🇮🇳
🇮🇳🤝🇧🇩 Bangladesh is moving ahead with a significant upgrade of its railway network, with plans to procure 200 broad-gauge passenger coaches from India in a deal to strengthen capacity and improve services across key routes.
#Railways Minister Shaikh Rabiul Alam informed Parliament that deliveries are scheduled to begin in 2026 and will continue in phases until December 2027 #Exports
https://swarajyamag.com/news-brief/bangladesh-to-induct-200-indian-broad-gauge-coaches-by-2027-signals-wider-fleet-expansion
Indian #Railways is delivering transformation at scale: 55,000 km of track renewed since 2014, 90% fewer rail failures, and track running at 110 kmph+ has risen from 40% to 80%. 🛤🚉
Indian Railways carries 25,000+ trains and 20 million+ passengers daily. Over 80,000 km of stronger rail network, 44,000 km of upgraded sleepers, and 8,00,000 machine-hours logged.
When the backbone improves, the impact multiplies across safety, punctuality, logistics, and productivity. That is nation-building in motion. #Reforms#Infra