tô fazendo o curso "Python Brasil: validação de dados no padrão nacional" e estou na duvida de como resolver um problema, na mascara o formato deve valer para telefone fixo ( +55(99)9999-9999 ) quanto para telefone residencial ( +55(99)99999-9999 ) e tbm deve valer para internacionais q o formato e assim (+555(99)9999-9999 ) mas na hora da mascara acaba dando um conflito, por exemplo um numero que era para ficar assim (+55(99)27890-7845), acaba ficando assim (+559(92)7890-7845 ) o código que eu estou usando e esse:
import re
class TelefonesBr:
def __init__(self, telefone):
if self.validacao_telefone(telefone):
self.telefone = telefone
else:
raise ValueError('Telefone INVALIDO!!!')
def __str__(self):
return self.telefone_formatado()
@staticmethod
def validacao_telefone(telefone):
padrao = '([0-9]{2,3})?([0-9]{2})([0-9]{4,5})([0-9]{4})'
resp = re.findall(padrao, telefone)
if resp:
return True
else:
return False
def telefone_formatado(self):
padrao = '([0-9]{2,3})?([0-9]{2})([0-9]{4,5})([0-9]{4})'
resp = re.search(padrao, self.telefone)
return f"+{resp.group(1)}({resp.group(2)}){resp.group(3)}-{resp.group(4)}"
conhecem alguma outra maneira de formatação para que não aconteça o que eu citei?