Na aula, fizemos a class TelefoneBr e criamos uma mascara para mostrar ao usuário o numero formatado considerando cód país (com 2 ou 3 dígitos), ddd (2 dígitos) e telefone ( 8 ou 9 dígitos), porém ao fazer um teste com cód de país com 2 dígitos (Brasil por exemplo: 55) e 9 dígitos para celular, o resultado acaba puxando 3 dígitos para cód país e deixa o celular com 8 dígitos.
import re
class TelefonesBr:
def __init__(self, telefone):
if self.valida_telefone(telefone):
self.numero = telefone
else:
raise ValueError('Número 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)
import re
from TelefonesBr import TelefonesBr
telefone = '5521123456789'
telefone_objeto = TelefonesBr(telefone)
print(telefone_objeto) -> +552(11)2345-6789
Como posso corrigir este erro?