Уведомления

Группа в Telegram: @pythonsu

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

megoloman
Зарегистрирован: 2015-10-26
Сообщения: 113
Репутация: +  0  -
Профиль   Отправить e-mail  

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

Здравствуйте! Помогите пожалуйста с составлением регулярного выражения. У меня есть список строк, у которых отличается только первая цифра, и мне необходимо составить РВ, при котором условию удовлетворяли бы лишь те строки, которые начинаются не с цифры 9. Пытался что-то типа этого сделать, но не работает:

import re
a = ["0subloc","1subloc","9subloc"]
if r'[0-8]subloc' in a:
    print "Yes"
else:
    print "No"

Офлайн

#2 Апрель 8, 2016 10:25:35

ZerG
Зарегистрирован: 2012-04-05
Сообщения: 2627
Репутация: +  61  -
Профиль   Отправить e-mail  

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

А зачем тут регулярка?

a = ["0subloc","1subloc","9subloc"]
for i in a:
  if i[0] is not '9':
    print i



Влодение рускай арфаграфией - это как владение кунг-фу: настаящие мастира не преминяют ево бес ниабхадимости

Офлайн

#3 Апрель 8, 2016 10:30:08

megoloman
Зарегистрирован: 2015-10-26
Сообщения: 113
Репутация: +  0  -
Профиль   Отправить e-mail  

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

Неправильно сформулировал вопрос, в списке могут быть строки, которые начинаются с числа, но заканчиваются не на “subloc”, например:

a = ["0subloc","1subloc","9subloc", "8bigarea", "7location"]

А проверять необходимо именно для subloc

Отредактировано megoloman (Апрель 8, 2016 10:31:19)

Офлайн

#4 Апрель 8, 2016 10:35:59

ZerG
Зарегистрирован: 2012-04-05
Сообщения: 2627
Репутация: +  61  -
Профиль   Отправить e-mail  

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

Правильно!
За ким хером вобще включать думалку…

a = ["0subloc","1subloc","9subloc", "8bigarea", "7location"]
for i in a:
  if i[0] is not '9' and i[-6:] == 'subloc':
    print i
Все ж напишут а вы питон программист потом.



Влодение рускай арфаграфией - это как владение кунг-фу: настаящие мастира не преминяют ево бес ниабхадимости

Офлайн

#5 Апрель 8, 2016 10:41:15

megoloman
Зарегистрирован: 2015-10-26
Сообщения: 113
Репутация: +  0  -
Профиль   Отправить e-mail  

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

Да, точно)
Но мне без цикла это надо проверить

Отредактировано megoloman (Апрель 8, 2016 10:41:22)

Офлайн

#6 Апрель 8, 2016 10:43:36

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

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

>>> import re
>>> 
>>> lst = ['0subloc', '1subloc', '9subloc', '8bigarea', '7location']
>>> 
>>> pat = re.compile(r'^[^9]subloc')
>>> list(filter(pat.search, lst))
['0subloc', '1subloc']
>>>



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

Офлайн

#7 Апрель 8, 2016 10:47:38

ZerG
Зарегистрирован: 2012-04-05
Сообщения: 2627
Репутация: +  61  -
Профиль   Отправить e-mail  

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


Как вы собираетесь без цикла пройтись по списку?
что по вашему происходит в вашем коде if r'subloc' in a: ?



Влодение рускай арфаграфией - это как владение кунг-фу: настаящие мастира не преминяют ево бес ниабхадимости

Офлайн

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

megoloman
Зарегистрирован: 2015-10-26
Сообщения: 113
Репутация: +  0  -
Профиль   Отправить e-mail  

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

Мне необходимо проверить наличие строки в списке, ведь это же можно сделать так:

if stroka in list:
    print True

Офлайн

#9 Апрель 8, 2016 10:56:58

plusplus
От:
Зарегистрирован: 2009-01-05
Сообщения: 418
Репутация: +  15  -
Профиль   Отправить e-mail  

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

megoloman
Мне необходимо проверить наличие строки в списке, ведь это же можно сделать так:

a = ["0subloc","1subloc","9subloc", "8bigarea", "7location"]
if any(i[0] is not '9' and i[-6:] == 'subloc' for i in a):
    print True



Офлайн

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

megoloman
Зарегистрирован: 2015-10-26
Сообщения: 113
Репутация: +  0  -
Профиль   Отправить e-mail  

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

py.user.next
Да, спасибо, работает. А если необходимо проверять не в списке, а в словаре наличие ключа с теми же условиями?:

a = {'city': <City: Харьков>, '9subloc': [<Sublocality: Нет района>],'house_type': [], 'max_price': None, '5subloc': [<Sublocality: Героев труда>]}

Отредактировано megoloman (Апрель 8, 2016 10:57:41)

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version