Второй из них представляет собой простую закодированную строку запроса, которую можно проанализировать с помощью urllib.parse.unquote
:
from urllib import parse
parse.unquote('q=score%3A%3E%3D100')
Первая сложнее, потому что это строка запроса, которая (ошибочно) содержит дважды закодированные сущности HTML , Вам нужно использовать html.unescape
для их перевода:
import html
html.unescape(parse.unquote('q=score%3A%26amp%3Bgt%3B%3D100'))
Чтобы преобразовать версию 1 в версию 2, вы можете проанализировать, а затем перекодировать. Обратите внимание, вам нужно пропустить его через html.escape
дважды ; первый переводит >
в >
, второй переводит в >
. (Честно говоря, вам действительно стоит заняться исправлением того, что API ожидает от этого формата, он полностью не работает.)
data = parse.unquote('q=score%3A%3E%3D100')
parse.quote(html.escape(data))
Я думаю, std :: priority_queue - это то, что вы ищете.
STL не имеет концепции (двоичных) деревьев, но есть методы, которые облегчают поддержание свойств кучи в наборе данных, таких как std :: make_heap, std :: sort_heap, std :: push_heap и так далее.