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

Erro ao executar o código

Boa tarde pessoal, alguém pode me ajudar?

eu escrevi o código:

import re

class ExtratorUrl: def init(self, url): self.url = self.sanitizacao_url(url) self.valida_url()

def sanitizacao_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')

    padrao_url = re.compile('(http(s)?://)?(www)?bytebank.com(.br)?/cambio')
    match = padrao_url.match(url)
    if not match:
        raise ValueError('A URL não é válida')

def get_url_base(self):
    indice_interrogacao = self.url.find('?')
    url_base = self.url[0: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_comercial = self.get_url_parametros().find('&', indice_valor)
    if indice_comercial == -1:
        valor = self.get_url_parametros()[indice_valor:]
    else:
        valor = self.get_url_parametros()[indice_valor: indice_comercial]

        return valor

def __len__(self):
    return len(self.url)

def __str__(self):
    return self.url

def __eq__(self):
    return self.url == other.url

url = "bytebank.com/cambio?quantidade=100&moedaOrigem=real&moedaDestino=dolar" extrator_url = extratorurl(url) extrator_url2 = extratorurl(url) print('O tamanho da minha URL é: ', len(extrator_url)) print("URL COMPLETA: ", extrator_url) print("Extrator_url == Extrator_url2? ", extrator_url == extrator_url2)

#extrator_url = ExtratorUrl(None) valor_quantidade = extrator_url.get_valor_parametro('Amount') print("O valor do parâmetro 'quantidade': ", valor_quantidade)

mas ao executar, mostra a seguinte mensagem:

C:\Users\Gabriel\AppData\Local\Programs\Python\Python310\python.exe "D:/Users/gabri/PycharmProjects/pythonProject/manipulação de str/extrator_url.py" Traceback (most recent call last): File "D:\Users\gabri\PycharmProjects\pythonProject\manipulação de str\extrator_url.py", line 54, in extrator_url = extratorurl(url) NameError: name 'extratorurl' is not defined. Did you mean: 'ExtratorUrl'?

Process finished with exit code 1

como sou novo na área de programação (esse é o meu primeiro curso), não consegui ainda encontrar o meu erro, se puderem me dar uma luz agradeço!
2 respostas
solução!

O Python é sensitive case então se vc declara a classe como ExtratoUrl para instanciar vc tem que fazer assim ExtratoUrl(url) na linha 54 e nao extratoUrl(url)

NameError: name 'extratorurl' is not defined. Did you mean: 'ExtratorUrl'?

NameError: Significa que deu um erro no nome, no seu caso, é porque você chamou por 'extratourl', sendo que a classe que está declarada foi 'ExtratoUrl'. O Python possui case sensitive, então você deve chamar a classe da mesma forma que a declarou, qualquer caractere diferente pode gerar esse erro de nome.

Detalhe que o próprio Python percebeu que havia uma classe parecida com 'extratourl' e sugeriu o nome certo:

Did you mean: 'ExtratorUrl'?