@instavine · Post #1152 · 16.04.2017 г., 16:00
#lelepons w/ #iamstevenspence
Hashtags
TGINSIGHT SIMILAR POSTS
Изворен канал @pythonotes · Post #65 · 8 апр.
Небольшой трик с регулярными выражениями который редко вижу в чужом коде. Допустим, вам нужно распарсить простой текст и вытащить оттуда пары имя+телефон. Вернуть всё это надо в виде списка словарей. Возьмем очень простой пример текста. >>> 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
Пребарај: #iamstevenspence
@instavine · Post #1152 · 16.04.2017 г., 16:00
#lelepons w/ #iamstevenspence
Hashtags
@instavine · Post #1071 · 04.03.2017 г., 14:00
Accent barriers 😂🙈 ------------ #amandacerny w/ #iamstevenspence ------------ @instavine
Hashtags
@instavine · Post #829 · 07.10.2016 г., 14:31
#amandacerny w/ #iamstevenspence ----------------------------- Join: @best_of_vine
Hashtags
@instavine · Post #1105 · 25.03.2017 г., 12:00
Having overprotective brothers😓💦 part 2 ------------ #lelepons w/ #iamstevenspence#raydiaz
@instavine · Post #975 · 14.01.2017 г., 14:00
The problems of having over protective brothers😖😡 ----------------- Когда твои братья защищают тебя от всего. 😖😡 ----------------- #lelepons w/ #raydiaz#iamstevenspence
@instavine · Post #1031 · 08.02.2017 г., 14:00
#amandacerny w/ #iamstevenspence#directedbystro --------------- @instavine
@instavine · Post #1257 · 09.09.2017 г., 05:45
Dirty cops be like... 👮🏽😂 ----------- Грязные копы... 😂 ----------- #kingbach w/ #klarity#raydiaz#iamstevenspence
@instavine · Post #960 · 07.01.2017 г., 14:00
Booty camp! 😂🔥 ------------------ #kingbach w/ #raydiaz#iamstevenspence#ashleykfit
@instavine · Post #752 · 07.09.2016 г., 08:06
Booty Camp🙈😂 ----------------------- #kingbach w/ #raydiaz#iamstevenspence#ashleykfit
@instavine · Post #903 · 28.11.2016 г., 14:00
When you do something cool ---------------------- #loganpaul w/ #iamstevenspence, #johannes.r.bartl, #raydiaz
@instavine · Post #1089 · 16.03.2017 г., 15:05
#amandacerny w/ #katjaglieson#johannes.r.bartl #iamstevenspence ----------- @instavine
@instavine · Post #1157 · 18.04.2017 г., 08:00
Girls be like...😱😍 --------- Девушки.... --------- #lelepons w/ #iamstevenspence#raydiaz#simszter