Небольшой трик с регулярными выражениями который редко вижу в чужом коде.
Допустим, вам нужно распарсить простой текст и вытащить оттуда пары имя+телефон. Вернуть всё это надо в виде списка словарей. Возьмем очень простой пример текста.
>>> 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
#dictionary#словарь
Har bir sohada bo'lganidek dizayn sohasida ham ba'zi terminlar mavjud va bu terminlarni biz dizaynerlar ko'p ishlatamiz, lekin ba'zida mijozga buni qanday ma'noga ega ekanligini tushuntirishga qiynalamiz.
Shu kichkinagina muammoni bartaraf etish uchun bu rubrikani yo'lga qo'ymoqchiman.
Mockup - bu hali amalga oshirilmagan mahsulotni vizual namoyish qilish va baholash uchun ishlatiladigan dizaynning tasviri ko‘rinishidagi maket. Odatda bu obyektlar va qatlamlarga ega bo‘lgan PSD fayl hisoblanadi.
KarimovBlog
#The#Devil#s#AI#Dictionary
Join the The Devil’s AI Dictionary beta on ✈️#TestFlight
🔗 Link: https://testflight.apple.com/join/AtJWXcgD
Shared by Dimitri
@posttobot
Qué puede hacer este bot?
Este bot le ayuda a enviar un mensaje a alguien en Telegram Messenger sin usar Telegram a través de este Bot conectado con una aplicación web.
Idioma: Inglés, Ruso
(visto en @BotsGram_cu)
#web, #pc, #remote, #telegram, #message, #text, #send, #post, #bot, #dictionary
@lingvanexbot
Qué puede hacer este bot?
Este es un bot traductor de alta calidad basada en redes neuronales para más de 50 idiomas.
➕ Traducir cualquier texto o palabras
➕ Convertir texto a voz
➕ Dar definiciones para cualquier palabra
➕ Diccionario
➕ Buscar por ejemplos de traducciones
Idioma: Múltiple
(visto en @BotsGram_cu)
#linguistic, #translate, #define, #dictionary, #dict, #text2speech, #speech, #examples, #sentence, #words