Небольшой трик с регулярными выражениями который редко вижу в чужом коде.
Допустим, вам нужно распарсить простой текст и вытащить оттуда пары имя+телефон. Вернуть всё это надо в виде списка словарей. Возьмем очень простой пример текста.
>>> text = '''
>>> Alex:8999123456
>>> Mike:+799987654
>>> Oleg:+344456789
>>> '''
Соответственно, для выделения нужных элементов будем использовать группы. Получится такой паттерн:
(\w+):([\d+]+)
Как мы будем формировать словарь из найденных групп?
>>> import re
>>> results = []
>>> for match in re.finditer(r"(\w+):([\d+]+)", text):
>>> results.append({
>>> "name": match.group(1),
>>> "phone": match.group(2)
>>> })
>>> print(results)
[{'name': 'Alex', 'phone': '8999123456'}, ...]
Можно немного сократить запись используя zip
>>> results = []
>>> for match in re.finditer(r"(\w+):([\d+]+)", text):
>>> results.append(dict(zip(['name', 'phone'], match.groups())))
Но есть способ лучше! Это именованные группы в regex. Можно в паттерне указать имя группы и результат сразу забрать в виде словаря.
>>> for match in re.finditer(r"(?P<name>\w+):(?P<phone>[\d+]+)", text):
>>> results.append(match.groupdict())
То есть всё что я сделал, это добавил в начале группы (внутри сбокочек) такую запись:
(?P<group-name>...)
Теперь найденная группа имеет имя и можно обратиться к ней как к элементу списка
>>> name = match['name']
Либо забрать сразу весь словарь методом groupdict()
>>> match.groupdict()
#tricks#regex
🚢Kuok Maritime усиливает флот: “Pac Libra” и “Pac Leo” введены в эксплуатацию.
Сингапурская Pacific Carriers Limited (PCL), входящая в группу Kuok Maritime, приняла в эксплуатацию два новых многоцелевых судна — “Pac Libra” и “Pac Leo”.
Суда стали первыми в серии 40 000 DWT, разработанной совместно с сингапурской верфью PaxOcean Group. Строительство осуществляется на мощностях PaxOcean Zhoushan под классом American Bureau of Shipping (ABS).
Основное назначение — перевозка проектных грузов, при этом суда способны работать и в сегментах сухих и навалочных грузов, расширяя коммерческую гибкость оператора.
Дедвейт: 40 000 тонн, вместимость трюмов: 48 486 куб. м. Конструктивно предусмотрена уникальная конфигурация сдвоенных кранов и открытая палуба для тяжелых и негабаритных грузов. Суда сертифицированы для перевозки IMDG-грузов, оснащены гидравлической системой твиндеков и энергоэффективными решениями.
Главная энергетическая установка — Hyundai-MAN B&W 6S50ME-C9.7, вспомогательные двигатели — Yanmar. Соответствие требованиям IMO Tier III по NOx, возможность работы на MGO и HSFO. Суда готовы к использованию СПГ в качестве основного топлива и могут быть дооснащены системой накопления энергии в рамках стратегии декарбонизации PCL.
Судно “Pac Libra” уже приступило к рейсам: первый заход состоялся в Тутикорине (Индия) с грузом лопастей офшорных ветрогенераторов для последующей отправки в Северную Америку. Далее судно работало на маршрутах Южной Атлантики.
Проект отражает стратегию Kuok Maritime по усилению позиций в сегменте проектной логистики и диверсификации грузовой базы на фоне роста спроса на heavy lift и энергетическую инфраструктуру.
📌Kuok Maritime Group — сингапурская морская группа, основанная в 1975 году, объединяет судоходные, офшорные и логистические активы. Является частью Kuok Group, контролируемой семьёй Куок (основатель — Роберт Куок).
#ProjectCargo#KuokMaritime#PCL#MultipurposeVessels#ShippingIndustry
#Italia🇮🇹
#Comunali
#Genova
A Genova, unico capoluogo di Regione al voto, i candidati sono 7.
Il centrodestra corre con Pietro #Piciocchi, sostenuto da Fratelli d'Italia (#FdI|ECR), Forza Italia (#FI|PPE), Lega (#LSP|PfE), Noi Moderati (#NM|PPE|PPCE), Unione di Centro (#UdC|PPE), Nuovo PSI (#NPSI|PPE) e una lista civica.
Il centrosinistra corre con Silvia #Salis, sostenuta da Partito Democratico (#PD|S&D), Movimento 5 Stelle (#M5S|LEFT), Alleanza Verdi e Sinistra (#AVS|G/EFA|LEFT) e 2 liste civiche.
Altri candidati sono:
- Mattia #Crucioli, sostenuto da Uniti per la Costituzione (#UpC|Pacifisti);
- Raffaella #Gualco, sostenuta da una lista civica;
- Antonella #Marras, sostenuta da una lista che include Rifondazione Comunista (#PRC|LEFT) e #PCI|Estrema sinistra;
- Cinzia #Ronzitti, sostenuta dal Partito Comunista dei Lavoratori (#PCL|Estrema sinistra);
- Francesco #Toscano, sostenuto da Democrazia Sovrana e Popolare (#DSP|Grande tenda populista, sovranista ed euroscettica).
@TuttoElezioni