Wie die Prozent-Kodierung von URL-Parametern in Python?
Wenn ich
url = "http://example.com?p=" + urllib.quote(query)
- Es nicht codieren
/
zu%2F
(Pausen OAuth-Normalisierung) - Es nicht handhaben Unicode (es gibt eine Ausnahme)
Gibt es eine bessere Bibliothek?
Diese sind nicht mit URL-Parametern, FYI. Sie sollten klären.
InformationsquelleAutor Paul Tarjan | 2009-11-08
Du musst angemeldet sein, um einen Kommentar abzugeben.
Aus der docs:
Das bedeutet, dass Sie " für den sicheren zu lösen, wird Ihre erste Frage:
Über die zweite Frage gibt es einen bug-report darüber hier. Anscheinend ist es behoben wurde in python 3. Sie können Problemumgehung es durch die Kodierung von utf8-so:
Übrigens haben Sie einen Blick auf urlencode
Hinweis, dass
urllib.quote
verschobenurllib.parse.quote
in Python ist3die Spezifikation: rfc 2396 definiert diese als reserviert
reserved = ";" | "/" | "?" | ":" | "@" | "&" | "=" | "+" | "$" | ","
was das urllib.Zitat zu tun hat.urllib.quote
verschobenurlib.parse.quote
, da Python ist3.urllib.parse.quote
docsAuch im Fall der Codierung einer Suchanfrage, Sie vielleicht besser mit quote_plus: docs.python.org/3/library/... 1. Es kodiert Schrägstriche von Standard-2. Es auch kodiert Leerzeichen
InformationsquelleAutor Nadia Alramli
In Python 3,
das urllib.Zitat
wurde verschoben, um diedas urllib.analysiert werden können.Zitat
und es nicht umgehen standardmäßig im unicode-Format.quote
ist eher vage als Globale. Es könnte schöner sein, um so etwas wie urlencode:from urllib.parse import quote as urlencode
.InformationsquelleAutor Paolo Moretti
Meine Antwort ist ähnlich wie Paolo ' s Antwort.
Ich denke, Modul
requests
ist viel besser. Es basiert aufurllib3
.Sie können versuchen, diese:
requests.utils.quote
ist der link zum python -quote
. Siehe Anfrage-Quellen.requests.utils.quote
ist eine dünne Kompatibilitäts-wrapper zuurllib.quote
für python 2 undurllib.parse.quote
für python 3InformationsquelleAutor Aminah Nuraini
Wenn Sie mit django, die Sie verwenden können, urlquote:
Beachten Sie, dass änderungen an Python, da diese Antwort veröffentlicht wurde bedeuten, dass dies jetzt ein legacy wrapper. Die Django 2.1 source code für django.utils.http:
InformationsquelleAutor Rick Westera
Ist es besser
urlencode
hier. Nicht viel Unterschied für einzelne parameter, aber IMHO macht den code übersichtlicher. (Es sieht verwirrend, um zu sehen, eine Funktionquote_plus
! vor allem diejenigen, die aus anderen languates)Docs
urlencode: https://docs.python.org/3/library/urllib.parse.html#urllib.parse.urlencode
quote_plus: https://docs.python.org/3/library/urllib.parse.html#urllib.parse.quote_plus
InformationsquelleAutor balki