проблема: выбрасывание исключения в функции re.match - PullRequest
2 голосов
/ 22 июня 2011

У меня есть один простой вопрос о создании исключений в функции re.match

Есть ли способ, чтобы функция 'match' вызвала исключение? Может быть, какой-нибудь флаг. Если это невозможно, возможно, есть какая-то другая функция в библиотеке RE, которая выдает исключение, когда список будет пуст, например.

Пример:

verify_link=re.match(".*"+str(country).lower()+"."+str(city).lower()+".*",link)

Этот пример в некоторых случаях возвращает None

Я ищу метод, который бы выбрасывал исключение, а не None Я могу сделать это с помощью оператора «if», но, возможно, есть другой способ

Ответы [ 4 ]

3 голосов
/ 22 июня 2011

В модуле Python re таких функций нет. См. документ :

исключение повторной ошибки

Исключение возникает, когда строка, переданная одной из функций здесь недопустимое регулярное выражение (для Например, он может содержать непревзойденный круглые скобки) или когда какая-то другая ошибка происходит во время компиляции или сопоставления. никогда не будет ошибкой, если строка не содержит соответствия шаблону.

2 голосов
/ 22 июня 2011
if re.match(".*"+str(country).lower()+"."+str(city).lower()+".*", link) is None:
    raise Exception('whatever')
1 голос
/ 22 июня 2011

Эмм? Исключения должны происходить только в исключительной ситуации, а не в той, которую вы описываете. Но, если вам нужно, вы всегда можете проверить возвращаемое значение, используя if, а затем вызвать исключение.

Редактировать: и даже сделать собственную функцию, чтобы скрыть исключение ...

0 голосов
/ 22 июня 2011

Если вы хотите выбросить исключение ??? так что вы можете использовать index строковый метод, например:

verify_link = link.index(str(country).lower()+"."+str(city).lower())

РЕДАКТИРОВАНИЕ: Вы должны принять во внимание, что '.' будет соответствовать точке только в моем примере выше.

Но я думаю, что это не лучший способ проверить, что подстрока находится внутри строки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...