Есть ли альтернатива parse_qs, которая обрабатывает точки с запятой?
Какие библиотеки / вызовы доступны для обработки строк запроса, содержащих точки с запятой, иначе, чем parse_qs?
>>> urlparse.parse_qs("tagged=python;ruby")
>>> {'tagged': ['python']}
Full BackgroundI 'я работаю с StackExchange API для поиска помеченных вопросов.
Поиск выглядит так, с тегами, разделенными точкой с запятой:
/2.1/search?order=desc&sort=activity&tagged=python;ruby&site=stackoverflow
Взаимодействие с API - это нормально. Проблема возникает, когда я хочу проверить вызовы, особенно при использованииhttpretty издеваться над HTTP.
Под капотом,httpretty
используетurlparse.parse_qs
из стандартных библиотек python для анализа строки запроса.
>>> urlparse.parse_qs("tagged=python;ruby")
{'tagged': ['python']}
Ясно, что это нене работает хорошо. Тот'Вот маленький пример, здесьФрагмент httpretty (вне контекста тестирования).
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()
Я хочу использовать механизм httpretty, но мне нужно обойтиparse_qs
, Я пока могу исправить httpretty, но хотел бы посмотреть, что еще можно сделать.