Небольшой трик с регулярными выражениями который редко вижу в чужом коде.
Допустим, вам нужно распарсить простой текст и вытащить оттуда пары имя+телефон. Вернуть всё это надо в виде списка словарей. Возьмем очень простой пример текста.
>>> 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
Wannes Raps — Brabantse Folk (Stoof, 1978)
#traditional#accordion#draailier#clarinet#bagpipes#guitar#mandolin#Belgium
Wannes Raps — бельгийская фолк-группа, названная в честь романа 1926 года фламандского писателя Эрнеста Клаеса. Во время Гентских праздников 1973 года они впервые выступили с традиционным фламандским репертуаром. В 1970-е годы, выпустив свой первый альбом, группа стала особенно популярной в Брабанте и Фландрии. В своем раннем творчестве они уделяли большое внимание музыкальному аспекту народных песен и танцевальному материалу.
Telegram | VK
Jrpjej — Taboo: Songs of Love & Death (Ored Recordings, 2021)
#traditional#drone#chanting#shychepshyn#apapshyn#accordion#kamyl#bagpipes#Russia
Новый альбом группы Jrpjej на который попали песни из архивных записей прошлого века и фольклорных экспедиций лейбла. Некоторые из них исполняются близко к оригиналу, другие — изменены кардинально. Благодаря новой вокалистке, Дайане Куловой, в репертуар группы вошли не только эпос и героические произведения, но и женские песни: шуточных, сетования и плачь. Заглавной стала песня «тэбу», плач девушки, над которой надругалась группа всадников, а зачинщиком всего был парень, который воспитывался с ней в одной семье. Адыгское «тэбу» можно перевести как «просьба» или восклицания «боже». В остальных песнях девушки выходят за нелюбимых для предотвращения кровопролития, на игрищах красавиц убивает рикошетый выстрел, сказители проклинают царей, а герои войны за независимость умирают от ран, полученных в битве ради любви.
🔗Spotify | AppleMusic | Bandcamp
Malvasia — Malvasia (Cetra, 1979)
#traditional#baroque#celtic#organetto#accordion#mandolin#harp#bagpipes#France#Italy
Единственная пластинка итальянской группы Malvasia, названной в честь семейства сортов винограда, распространённого в средиземноморском регионе, из которого делают самую сладкую Мадеру, греческий ликер и множество различных вин. Группа исполняла различные традиционные композиции, включая итальянские, французские и даже кельтские. Не удивительно, что их звучание испытало влияние кельтской музыки, музыки эпохи барокко и средних веков. Все композиции с альбома записаны с использованием традиционных акустических инструментов, среди которых волынка, мандолина, различные флейты, арфа, скрипка и аккордеон.
Telegram