Criei uma classe para fazer a extração das informações, e queria usar um dict comprehension mas não estou sabendo implementar corretamente. Segue o código:
url = "https://bytebank.com/cambio?moedaOrigem=real&moedaDestino=dolar&quantidade=100"
class UrlParams:
"""Extrai todos os elementos de uma URL."""
def __init__(self, url_string: str):
self.__original = url_string
self.__elementos = self.__separar_elementos(url_string)
if self.__elementos["params"]:
self.__elementos["params"] = self.__separar_parametros(
self.__elementos["params"])
def __separar_elementos(self, url: str) -> dict:
elem = re.match(r"^(?P<protocolo>https?):\/\/"
"((?P<subdomain>[a-zA-Z0-9]{1,256})\.)?"
"(?P<domain>[a-zA-Z0-9]{1,256})"
"\.(?P<tld>[a-zA-Z0-9.]{1,63})"
"(\/(?P<page>[a-zA-Z0-9()%+=]{1,256}(\.x?html?)?))?"
"(\?(?P<params>.*))?$"
, url)
return elem.groupdict()
def __separar_parametros(self, params_value: str) -> dict:
params_list = params_value.split('&')
#params_dict = {k: v for item in params_list for (k, v) in item.split('=')}
params_dict = dict()
for item in params_list:
kv = item.split('=')
params_dict[kv[0]] = kv[1]
return params_dict
@property
def elementos(self):
return self.__elementos
def __str__(self):
return self.__original
Como faz para para atribuir o split ["key", "value"]
para {"key": "value"}
?