¿Hay una alternativa a parse_qs que maneja punto y coma?
¿Qué bibliotecas / llamadas están disponibles para manejar cadenas de consulta que contienen punto y coma de manera diferente a parse_qs?
>>> urlparse.parse_qs("tagged=python;ruby")
>>> {'tagged': ['python']}
Fondo completoEstoy trabajando con la API de StackExchange para buscar preguntas etiquetadas.
Buscar Se presenta como tal, con etiquetas separadas por punto y coma:
/2.1/search?order=desc&sort=activity&tagged=python;ruby&site=stackoverflow
Interactuar con la API está bien. El problema viene cuando quiero probar las llamadas, especialmente cuando usohttpretty para burlarse de HTTP.
Bajo el capó,httpretty
esta usandourlparse.parse_qs
de las bibliotecas estándar de python para analizar la cadena de consulta.
>>> urlparse.parse_qs("tagged=python;ruby")
{'tagged': ['python']}
Claramente eso no funciona bien. Ese es el pequeño ejemplo, aquí hay un fragmento de httpretty (fuera del contexto de prueba).
import requests
import httpretty
httpretty.enable()
httpretty.register_uri(httpretty.GET, "https://api.stackexchange.com/2.1/search", body='{"items":[]}')
resp = requests.get("https://api.stackexchange.com/2.1/search", params={"tagged":"python;ruby"})
httpretty_request = httpretty.last_request()
print(httpretty_request.querystring)
httpretty.disable()
httpretty.reset()
Quiero usar la maquinaria de httpretty, pero necesito una solución paraparse_qs
. Puedo hacer un parche de mono, por ahora, pero me encantaría ver qué más se puede hacer.