2016-02-18 4 views
0

Я изучаю python, так что это может быть простой вопрос для вас, и я надеюсь получить некоторую помощь в понимании того, что происходит не так.Функция регулярных выражений python не работает

Я пытаюсь создать функцию, которая ищет текст для телефонных номеров.

import re 

def findPhoneNumber(a): 
    b = re.compile(r'\d{3}-\d{3}-\d{4}') 
    c = b.search(a) 
    return c.group() 

findPhoneNumber('123') 

Я получаю эту ошибку: AttributeError: объект «NoneType» не имеет атрибута «группы»

так для моего понимания, переменная с не получает каких-либо значений, связанных и, таким образом, возвращается сообщение об ошибке ,

Может ли кто-нибудь объяснить, что я делаю неправильно здесь?

+2

ваше регулярное выражение не будет соответствовать '123', попробуйте с' findPhoneNumber ('123-213-1234') ' –

+0

Спасибо, он сделал работу .. – Mortada

+1

и, конечно же, не отступать' import re' – symphonic

ответ

4

Ваш пример «123» не соответствует ни одному номеру телефона, вам необходимо «123-456-7890».

Итак, в вашем примере c==None. Вы должны проверить, что c является актуальной задачей матч с if(c), прежде чем пытаться получить доступ к c.group()

2

Если регулярное выражение не соответствует ничего c бы None давая вам следующее исключение:

AttributeError: 'NoneType' object has no attribute 'group' 

Вам просто нужно для обработки этого исключения

def findPhoneNumber(a): 
    try: 
     return re.search(r'\d{3}-\d{3}-\d{4}', a).group() 
    except AttributeError: 
     return None 

Также он имеет мало смысла компилировать регулярное выражение внутри функции, чтобы использовать его только один раз

Смежные вопросы