Небольшой трик с регулярными выражениями который редко вижу в чужом коде.
Допустим, вам нужно распарсить простой текст и вытащить оттуда пары имя+телефон. Вернуть всё это надо в виде списка словарей. Возьмем очень простой пример текста.
>>> 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
🎄 Do you know how to respond when an English speaker wishes you a merry Christmas?’ Try this quiz - we’ll tell you the answer later! Are there any other ways you could respond? 🤶
[Image: Getty]
EXTRA: This festive season, we're sharing some of our own stories about Christmas and New Year. Link in bio.
#learnenglish#english#bbclearningenglish
😊 The next time you're feeling 'happy', try using one of these synonyms instead and boost your vocabulary! ✍️ See if you can use one of them in the comments.
Note: not all the words are perfect synonyms. Pay attention to the context and grammar.
MORE: Is happiness the key to success? 🔎 Find out in this episode of 6 Minute English. Click on the link in our bio.
#englishlesson#englishwords#englishvocabulary#english#bbclearningenglish
🍱🥘🍲 The next time you eat something delicious, try using one of these synonyms instead and boost your vocabulary! ✍️ See if you can use one of them in the comments.
Note: not all the words are perfect synonyms. Pay attention to the context and grammar.
🎧 MORE: Click on the link in our bio to listen to a 6 Minute English box set on the topic of food.
#englishlesson#englishwords#englishvocabulary#english#bbclearningenglish
🚀 Take your English vocabulary to the next level by learning these alternatives to ‘less than’! Can you use one in a sentence - and do you know any more?
👀 Note: these words may not be exact synonyms - pay attention to the context.
#englishlesson#englishwords#englishvocabulary#english#bbclearningenglish#englishteacher#lessthan
🤢😔 Everybody gets sick from time to time… so we made a vocabulary table with useful sickness-related English for you to learn, use, and share with a friend! 😄
Do you know any more English vocabulary related to illness? 👇
#englishvocabulary#learnenglish#englishphrases#britishenglish#EFL#ESL#ELT#vocab#bbclearningenglish
😱 Lots of animal species are at risk of extinction. 🐘🦁🦒Can you choose the correct word to fill the gap? We’ll tell you the correct answer later! (Image: Getty)
#environment#extinction#extinct#earth#animals#learnenglish#bbclearningenglish#vocab#englishquiz
Here are 5 linkers that you can add to your conversation to make it flow better and sound more fluent!
1) To be honest – I’m going to give my opinion (even if it’s insulting!)
2) Actually – to correct information or say something surprising
3) Mind you – I’ve just thought of something that contrasts what I was saying
4) By the way – I’m going to introduce a new topic I’ve just remembered
5) Anyway – I’m going to finish the conversation or change topic now
Add them to your conversations to help them flow! Which one is your favourite?
#learnenglish#speakenglish#vocabulary#bbclearningenglish#britishenglish#formalenglish#linkers#naturalenglish#nativespeakerenglish#conversationskills#ncoversationalenglish
❓❓❓Do you know how to respond when an English speaker asks ‘Is the post office open today?’ 🏣Try this quiz - we’ll tell you the answer later! Are there any other ways you could respond?👇👇👇
[Image: Getty]
#learnenglish#socialenglish#correctresponse#englishquiz#english#englishvocabulary#learnenglish#englishphrases#contraction#question#shortanswer#britishenglish#EFL#ESL#ELT#vocab#bbclearningenglish