3
respostas

Python não reconhece find

def get_url_parametros(self):
    indice_interrogacao = self.url.find('?')
    url_parametros = self.url[indice_interrogacao+1:]
    return url_parametros

Nesse código ele está achando que find é um atributo

O erro AttributeError: 'function' object has no attribute 'find'

Como consertar?

3 respostas

Oi Leandro! Você poderia colar aqui o código completo? Eu acredito que o atributo url está sendo declarado como uma função ao invés de uma variável do tipo string.

class ExtratorURL: def init(self, url): self.url = self.sanitiza_url self.valida_url()

def sanitiza_url(self,url):
    if type(url) == str:
        return url.strip()
    else:
        return ""   

def valida_url(self):
    if not self.url:
        raise ValueError("A URL está vazia")

def get_url_base(self):
    indice_interrogacao = self.url.find('?')
    url_base = self.url[:indice_interrogacao]
    return url_base

def get_url_parametros(self):
    indice_interrogacao = self.url.find('?')
    url_parametros = self.url[indice_interrogacao+1:]
    return url_parametros

def get_valor_parametro(self, parametro_busca):
    indice_parametro = self.get_url_parametros().find(parametro_busca)
    indice_valor = indice_parametro + len(parametro_busca) +1
    indice_e_comercial = self.get_url_parametros().find('&', indice_valor)
    if indice_e_comercial == -1:
        valor = self.get_url_parametros()[indice_valor:]
    else:
        valor = self.get_url_parametros()[indice_valor:indice_e_comercial]
    return valor

extrator_url = ExtratorURL("https://bytebank.com/cambio?moedaDestino=dolar&moedaOrigem=real&quantidade=100") valor_quantidade = extrator_url.get_valor_parametro("quantidade") print(valor_quantidade)

Oi, Leandro!

Acredito que você tenha esquecido de chamar self.sanitiza_url(url) (observe os parêntesis para chamar a função). Observe o código abaixo corrigido

class ExtratorURL:
    def init(self, url):
        self.url = self.sanitiza_url(url)  # <-- aqui estava somente self.sanitiza_url
        self.valida_url()