1
resposta

Lista de telefones - findall

Fiquei com uma dúvida em relação ao método findall do regex .

class GetPhones:

    def __init__(self, text):
        self.phones = self.validate(text)

        if len(self.phones) == 0:
            raise ValueError('Invalid Number')

    def __getitem__(self, item):
        return self.phones[item]

    def validate(self, text):
        pattern = '([(]?[0-9]{2,3}[)]?)?([(]?[0-9]{2}[)]?)([0-9]{4,5})([-]?)([0-9]{4})'
        return re.findall(pattern, text)

Por exemplo, nessa classe com o método especial getitem. Ao instânciar um objeto da seguinte forma:

text = 'oal ljsaioda 5558299999555 sjaiosjaisoa (525)6598989856 auhsauisaas (85)(48)5556-9857'
temp = GetPhones(text)

for item in temp:
    print(item)

A sáida que que recebo é: ('555', '82', '9999', '', '9555') ('(525)', '65', '9898', '', '9856') ('(85)', '(48)', '5556', '-', '9857')

Minha dúvida é, como eu faria para chamar o método str em cada iteração para formatar corretamente?

1 resposta

Oii Carlos, tudo bem?

Quando você diz "formatar corretamente" quer dizer sem ser uma resposta em tuplas? Algo como:

555 82 9999  9555
(525) 65 9898  9856
(85) (48) 5556 - 9857

Se sim, basta você fazer o desempacotamento da tupla utilizando o asterisco:

for item in temp:
    print(*item)

Caso ainda não seja o resultado que você espera, peço por gentileza que mostre um exemplo de como seria o resultado esperado :)

Qualquer dúvida é só falar. Abraços e bons estudos!