Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Erro AttributeError!!

print(retorno.group()) AttributeError: 'NoneType' object has no attribute 'group'

import re

email1 = 'Meu numero é 1234-1234'
email2 = 'Fale comigo em 1234-1234 esse é meu telefone'
email3 = '1234-1234 é o meu celular'


padrao = '[0123456789] [0123456789] [0123456789] [0123456789] [-] [0123456789] [0123456789] [0123456789] [0123456789]'

tra = padrao.encode(encoding='utf8')
tro = email1.encode(encoding='utf8')
retorno = re.search(tra, tro)

print(retorno.group())

Está igual aula porémcontinua aprecendo esse erro.

2 respostas
solução!

Falaaaa Victor, tudo beleza? O que aconteceu neste caso foram os espaços contidos na string padrão, observe:

padrao = '[0123456789] [0123456789] [0123456789] [0123456789] [-] [0123456789] [0123456789] [0123456789] [0123456789]'

Entretanto, na string alvo, que é email1, os números não constam com espaços entre si, ou seja, não há espaço entre o 1234-1234, como mostro abaixo:

email1 = 'Meu numero é 1234-1234'

Neste exemplo de código que você postou, caso email1 fosse escrito da forma abaixo funcionaria:

email1 = 'Meu numero é 1 2 3 4 - 1 2 3 4'

Então, para que o seu código funcione, basta retirar os espaços entre as classes de números, ficando então desta forma:

import re

email1 = 'Meu numero é 1234-1234'
email2 = 'Fale comigo em 1234-1234 esse é meu telefone'
email3 = '1234-1234 é o meu celular'


padrao = '[0123456789][0123456789][0123456789][0123456789][-][0123456789][0123456789][0123456789][0123456789]'

tra = padrao.encode(encoding='utf8')
tro = email1.encode(encoding='utf8')
retorno = re.search(tra, tro)

print(retorno.group())

O regex consegue reconhecer apenas o formato do padrão passado, caso tenha alguma coisinha diferente como por exemplo o espaço, já é motivo para ele não dar match. Portanto, devemos sempre ser cuidadosos quanto a isto.Espero que tenha esclarecido sua dúvida :)

Muito obrigado!! Me ajudou muito! =D