Небольшой трик с регулярными выражениями который редко вижу в чужом коде.
Допустим, вам нужно распарсить простой текст и вытащить оттуда пары имя+телефон. Вернуть всё это надо в виде списка словарей. Возьмем очень простой пример текста.
>>> 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
По следам экспедиции...
На джайлоо Сон-Кол в конце сентября уже холодно.
Скотоводы спешно снимают свой лагерь, пакуют вещи, вывозят скот. К этой слаженной работе присоединяется и наш экспедиционный отряд, помогая собрать две юрты.
Увидев меня, курсирующего по стойбищу в колпаке, хозяин спросил: "Ты - кыргыз?"
Я ответил, что нет, что я из России. Он тогда уточнил, откуда я? Говорю, что я из Барнаула, это Алтайский край.
В этот момент глаза пастуха наполнились особым вдохновением. Он радостно заключил: тогда ты точно кыргыз!
Почему, удивился я?
Байке пояснил: Алтай и Кыргызстан - это одно и тоже. И здесь и там живет один народ - кыргызы!
В этот момент в словах пастуха открылся один из эпизодов устной этноисторической памяти кыргызов - четкое представление о том, что Алтай когда-то, являлся их домом, одной из прародин!
#этнография#этнология#антропология#ethnology#ethnography#anthropology#ethnologie#ethnographic#ethnographie
По следам экспедиции...
Зачастую традиционная культура открывает свои тайны только через ее глубоких знатоков. Можно общаться с десятком собеседников, и не узнать ничего. А можно встретить одного аксакала, который, как неиссякаемый колодец утолит жажду всех твоих знаний...
В селе Кара-Суу Кочкорского района Нарынской области таким нашим собеседником стал Мамбет Садык уулу. Он - табып - лекарь, знахарь, врачеватель многих болезней.
Отвечая по-кыргызски на мои вопросы о целительных свойствах коровьего молока, которым лечили маленьких детей, он вдруг по-русски спросил меня: "Ну, а сам ты как? Как звать тебя? Семья есть, дети есть?"
Есть - отвечаю я. Он снова перешел на кыргызский: "Чакши, чакши!" Хорошо, мол, рад за тебя.
А потом он провел нас до ближайшего арыка, на берегах которого растут лечебные травы. Без этих растений, как и без молитвы, многие болезни не вылечить....
#этнография#этнология#антропология#ethnology#ethnography#anthropology#ethnographic#ethnographie#кыргызстан#кыргызы
Подводим итоги международной этнографической экспедиции "Большой Алтай" в Кыргызстане.
✍работали с 18 по 28 сентября
✍районы работ : Иссык-Кульская и Нарынская области
✍посетили 10 населенных пунктов
✍прошли маршрут в 2000 км
✍участвовали 20 этнографов из 12 вузов и научных учреждений Кыргызстана и России
✍собранные материалы послужат основой коллективной монографии.
#этнография#этнология#антропология#ethnology#ethnography#anthropology#ethnologie#ethnographic#ethnographie#кыргызстан#кыргызы#большойалтай#bolshoyaltay#этнографическаяэкспедиция#путешествия