Solucionado (ver solução)
Solucionado
(ver solução)
5
respostas

Erro no codigo

duvida

5 respostas

tentei este aqui e ainda deu errado e nao seu porque

class ExtratorURL:
    def __init__(self, url):
        self.url = self.sanitiza_url(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 esta 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


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



Traceback (most recent call last):
  File "C:\Users\alyssa\PycharmProjects\extrator-url\extrator_url.py", line 39, in <module>
    valor_quantidade = extrator_url.get_valor_parametro("moedaOrigem")
  File "C:\Users\alyssa\PycharmProjects\extrator-url\extrator_url.py", line 27, in get_valor_parametro
    indice_parametro = self.get_url_parametros().find(parametro_busca)
  File "C:\Users\alyssa\PycharmProjects\extrator-url\extrator_url.py", line 22, in get_url_parametros
    indice_interrogacao = self.url.find('?')
AttributeError: 'builtin_function_or_method' object has no attribute 'find'

Process finished with exit code 1
solução!

Olá amigo,

Corrija o seu método "sanitiza_url". Ao usar o método strip na string esqueceu de abrir e fechar os parênteses. Método corrigido:

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

Abraços

nossa, serio? que pequena falha minha e sim agora deu certo, muito obrigado Jefferson

como vc conseguiu identificar atraves do erro? porque deu certo mais to tentando enteder como vc viu isso

Israel, quando você não colocou os parenteses na frente do nome da função, em vez de ter sido retornado uma string, foi retornado um OBJETO. Então quando você tentou usar a função find() que não existe na classe OBJETO, deu erro.

Ps: find() é herdado da classe string, então se você tem uma variável desse tipo, essa variável herda as sub-tarefas da classe string

texto = "saodj aspdoaj dpasodj aspodjas opdjsa da"
texto.find("a")   #string.find()  - Ok

objeto = texto.strip
objeto.find()   #Object.find()  -  Game Over

Debugue isso no seu pyCharm e veja na prática:

texto = "saodj aspdoaj dpasodj aspodjas opdjsa da"
texto_find = texto.find("j") #retornará 5 que é a posição da letra j

objeto = texto.strip #retornará o objeto

print(texto_find) #mostrará o valor retornado por find()
print(objeto) #mostrará o objeto e seu endereço