Olá! Segui o código igual ao da aula, porém pela falta de bons exemplos e de mais casos explicados no curso, não consegui tirar a dúvida sobre as diferentes formatações peloi video somente... Temos o padrão de formatação ([0-9]{2,3})?([0-9]{2})([0-9]{4,5})([0-9]{4}), deixando o digito do pais como opcional, até ai ok, mas quando faço o seguinte pedido de numero: 5521987080711, em vez de retornar +55(21)987080711 retorna +552(19)8708-0742!! Eu fiz algo de errado ou o código não conserta esse erro? Achei a aula incrivelmente rasa, dando exemplos de formatação mas sem prever erro ou dificuldade alguma nos exemplos....
Segue meu codigo:
Main:
from telefonesbr import TelefonesBr import re
telefone = '5521987080742'
telefone_objeto = TelefonesBr(telefone)
print(telefone_objeto)
Classe:
import re
class TelefonesBr: def init(self, telefone): if self.valida_telefone(telefone): self.numero = telefone else: raise ValueError ('Numero incorreto')
def __str__(self):
return self.format_numero()
def valida_telefone(self, telefone):
padrao = '([0-9]{2,3})?([0-9]{2})([0-9]{4,5})([0-9]{4})'
resposta = re.findall(padrao, telefone)
if resposta:
return True
else:
return False
def format_numero(self):
padrao = '([0-9]{2,3})?([0-9]{2})([0-9]{4,5})([0-9]{4})'
resposta = re.search(padrao, self.numero)
numero_formatado = '+{}({}){}-{}'.format(resposta.group(1), resposta.group(2), resposta.group(3), resposta.group(4))
return numero_formatado