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 ?