Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 8, 2016 10:57:50

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Регулярные выражения

megoloman
Регулярку вы не можете применить к списку, потому что регулярные выражения работают со строками. Список - это точно не строка, это множество строк, к каждой из которых вы хотите применить рег. выражение. Для этого нужен цикл.



Офлайн

#2 Апрель 8, 2016 12:02:27

r00tl3ss
Зарегистрирован: 2016-03-31
Сообщения: 25
Репутация: +  5  -
Профиль   Отправить e-mail  

Регулярные выражения

>>> import re
>>> 
>>> d = {'0subloc': 'found1','1subloc':'found2','9subloc':'not found1', '8bigarea': 'not found2', '7location':'not found3'}
>>> 
>>> pat = re.compile(r'^[^9]subloc')
>>> list(filter(pat.search, d.keys()))
['0subloc', '1subloc']
>>>

Офлайн

#3 Апрель 8, 2016 12:12:55

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10010
Репутация: +  857  -
Профиль   Отправить e-mail  

Регулярные выражения

megoloman
А если необходимо проверять не в списке, а в словаре наличие ключа с теми же условиями?:
>>> import re
>>> 
>>> dct = {'0subloc': 1, '1subloc': 2, '9subloc': 3, '8bigarea': 4, '7location': 5}
>>> 
>>> pat = re.compile(r'^[^9]subloc')
>>> list(filter(pat.search, dct))
['0subloc', '1subloc']
>>>

r00tl3ss
list(filter(pat.search, d.keys()))
Давно уже словари являются итераторами по ключам. keys() используется тогда, когда надо получить вид (view) ключей.



Отредактировано py.user.next (Апрель 8, 2016 12:15:02)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version