duvida
duvida
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
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