2014-01-13 3 views
0

Я работаю над кодом примера, который я нашел на What's the most efficient way to find one of several substrings in Python?. Я изменил код:Как обрабатывать AttributeError в python?

import re 
to_find = re.compile("hello|there") 
search_str = "blah fish cat dog haha" 
match_obj = to_find.search(search_str) 
#the_index = match_obj.start() 
which_word_matched = "" 
which_word_matched = match_obj.group() 

Поскольку теперь не совпадают, я получаю:

Traceback (most recent call last): 
File "<console>", line 1, in <module> 
AttributeError: 'NoneType' object has no attribute 'group' 

Что является стандартным способом в Python для обработки сценария не матча, чтобы избегайте ошибки

ответ

3

Ваш match_obj - None, потому что регулярное выражение не совпало. Тест на него в явном виде:

which_word_matched = match_obj.group() if match_obj else '' 
+0

Очень ценный - Bill – user61629

+0

Это интересный способ его фразы. Я этого раньше не видел. – user61629

4
match_obj = to_find.search(search_str) 
if match_obj: 
    #do things with match_obj 

Другое обращение будет идти в else блоке, если вам нужно что-то делать, даже если нет никакого совпадения.