Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Correção format_numero()

Testando a função format_numero(), obtive erros de formatação para números de celular com código de país em 2 dígitos.

Sendo o código que define a função:

    def format_numero(self):
        padrao_telefone = "([0-9]{2,3})?([0-9]{2})([0-9]{4,5})([0-9]{4})"
        resposta = re.search(padrao_telefone,self.numero)
        numero_formatado = "+{} {} {}-{}".format(resposta.group(1),resposta.group(2),resposta.group(3),resposta.group(4))
        return numero_formatado

Chamando a str de TelefonesBr retorna a função format_numero(), ou seja, a variável numero_formatado:

telefone = TelefonesBr('5511951523945')
print(telefone)

Recebemos o seguinte resultado: +551 19 5152-3945 quando o esperado seria +55 11 95152-3945

Como contornar essa situação mantendo a possibilidade de formatação com código de país em 2 e 3 dígitos??

1 resposta
solução!

Corrigi o problema com a seguinte alteração:

    def format_numero(self):
        padrao_telefone = "([0-9]{2,3})?([0-9]{2})([9]{1})?([0-9]{4})([0-9]{4})"
        resposta = re.search(padrao_telefone,self.numero)
        numero_formatado = "+{}{} {}{}-{}".format(resposta.group(1),resposta.group(2),resposta.group(3),resposta.group(4),resposta.group(5))
        return numero_formatado

    def __str__(self):
        return self.format_numero()