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

Formatacao proposta retorna None caso nao seja informado o codigo do pais

Ola, espero que esteja tudo bem com vcs. a formatacao proposta funciona, desde que seja informado o codigo do pais, porem, caso nao seja informado ( quero dizer q o valor do group(1) seja None ) é retornado na formatacao none, ou fiz errado rs

import re

padrao = "([0-9]{2}|[0-9]{3})?([0-9]{2}|[0-9]{3})([0-9]{4,5})([0-9]{4})"
telefone = "2126481234"
resposta = re.search(padrao, telefone.replace("-", ""))
numero_formatado = "+{} ({}) {}-{}".format(resposta.group(1),
                                           resposta.group(2),
                                           resposta.group(3),
                                           resposta.group(4))
print(numero_formatado)
# neste caso é exibido +None (21) 2648-1234

padrao = "([0-9]{2}|[0-9]{3})?([0-9]{2}|[0-9]{3})([0-9]{4,5})([0-9]{4})"
telefone = "55212648-1234"
resposta = re.search(padrao, telefone.replace("-", ""))
numero_formatado = "+{} ({}) {}-{}".format(resposta.group(1),
                                           resposta.group(2),
                                           resposta.group(3),
                                           resposta.group(4))
print(numero_formatado)

# neste caso é exibido +55 (21) 2648-1234

Utilizado de ternário para exibir um valor padrão, resolvi da seguinte forma:

padrao = "([0-9]{2}|[0-9]{3})?([0-9]{2}|[0-9]{3})([0-9]{4,5})([0-9]{4})"
telefone = "2126481234"
resposta = re.search(padrao, telefone.replace("-", ""))
numero_formatado = "+{} ({}) {}-{}".format(resposta.group(1) if resposta.group(1) != None else 55,
                                           resposta.group(2),
                                           resposta.group(3),
                                           resposta.group(4))
print(numero_formatado)
#resultado exibido +55 (21) 2648-1234

telefone = "55212648-1234"
resposta = re.search(padrao, telefone.replace("-", ""))
numero_formatado = "+{} ({}) {}-{}".format(resposta.group(1) if resposta.group(1) != None else 55,
                                           resposta.group(2),
                                           resposta.group(3),
                                           resposta.group(4))
print(numero_formatado)
#sendo exibido +55 (21) 2648-1234

Esta linha de raciocínio estaria correta ?

1 resposta
solução!

Oi Rodrigo, espero que esteja tudo bem com você ^-^

Está correta sua linha de raciocínio, mandou bem! Está no caminho certo.

E qualquer dúvida, não hesite em perguntar, estamos à disposição. Abraços e bons estudos!