Dado string de Parâmetros de URL, converter em itens de dicionário.

Entrada : test_str = 'gfg = 4 & is = 5' 
Saída : {'gfg': ['4'], 'is': ['5']} 
Explicação : o valor de gfg é 4.

Entrada : test_str = 'gfg = 4' 
Saída : {'gfg': ['4']} 
Explicação : o valor de gfg é 4 como parâmetro. 
 

Método nº 1: usando urllib.parse.parse_qs()

Esta é a função embutida padrão que executa esta tarefa, ela analisa e as chaves são formadas de LHS de “=” e retorna uma lista de valores que estão em valores RHS para os parâmetros. Portanto, importe urllib.parse() externo para permitir que isso funcione.



import urllib.parse 
test_str = 'gfg=4&is=5&best=yes'
print("The original string is : " + str(test_str)) 
res = urllib.parse.parse_qs(test_str) 
print("The parsed URL Params : " + str(res)) 
Resultado

A string original é: gfg = 4 & is = 5 & best = yes
Os parâmetros de URL analisados: {'gfg': ['4'], 'is': ['5'], 'best': ['yes']}

Método 2: usando findall() + setdefault()

Nisto , obtemos todos os parâmetros usando findall() e atribuímos chaves e valores usando setdefault() e loop.

import re 
test_str = 'gfg=4&is=5&best=yes'
print("The original string is : " + str(test_str)) 
params = re.findall(r'([^=&]+)=([^=&]+)', test_str) 
res = dict() 
for key, val in params: 
    
    res.setdefault(key, []).append(val) 
print("The parsed URL Params : " + str(res)) 
Resultado

A string original é: gfg = 4 & is = 5 & best = yes
Os parâmetros de URL analisados: {'gfg': ['4'], 'is': ['5'], 'best': ['yes']}