Pythonのurlparseで見られる奇妙な動作に対する既知の回避策があるかどうか疑問に思いました。
pythoninterpeterの数行の結果を次に示します。
>>> import urlparse
>>> urlparse.parse_qsl('https://localhost/?code=bork&charlie=brown')
[('https://localhost/?code', 'bork'), ('charlie', 'brown')]
上記の例では、最初の値「https:// localhost /?code」のキーはなぜですか?ただの「コード」ではないでしょうか?注:parse_qsにも同じ悪い動作があります。
>>> urlparse.urlparse('abcd://location/?code=bork&charlie=brown')
ParseResult(scheme='abcd', netloc='location', path='/?code=bork&charlie=brown', params='', query='', fragment='')
>>> urlparse.urlparse('https://location/?code=bork&charlie=brown')
ParseResult(scheme='https', netloc='location', path='/', params='', query='code=bork&charlie=brown', fragment='')
上記の例では、クエリ文字列が常にクエリ値に含まれるとは限らないことに注意してください。プロトコルがまったく重要なのはなぜですか?クエリフィールドは常にクエリ文字列を取得するべきではありませんか?'ftp'または他のよく知られたプロトコルでのテストも不幸なようです。