Die für die URL-Codierung verwendete Funktion urllib.parse.quote (Funktion urllib.quote in Python2) codiert das Pfadtrennzeichen (/) standardmäßig nicht.
>>> help(urllib.parse.quote)
#Die durch das Argument safe angegebene Zeichenfolge wird von der Codierung ausgeschlossen.
quote(string, safe='/', encoding=None, errors=None)
quote('abc def') -> 'abc%20def'
(…)
By default, the quote function is intended for quoting the path
section of a URL. Thus, it will not encode '/'. This character
is reserved, but in typical usage the quote function is being
called on a path where the existing slash characters are used as
reserved characters.
Daher ist es beim Codieren einer Zeichenfolge einschließlich einer URL mit Twitter-API usw. erforderlich, das zweite Argument (oder das benannte Argument sicher) auf "(leeres Zeichen)" zu setzen.
quote_safe
#Pfadtrennzeichen(/)Ist nicht verschlüsselt
>>> urllib.parse.quote('http://hoge.com/api')
'http%3A//hoge.com/api'
#Pfadtrennzeichen(/)Ist verschlüsselt
>>> urllib.parse.quote('http://hoge.com/api', '')
'http%3A%2F%2Fhoge.com%2Fapi'
>>> urllib.parse.quote('http://hoge.com/api', safe='')
'http%3A%2F%2Fhoge.com%2Fapi'
Recommended Posts