URLが相対的なものか絶対的なものかを確認するための推奨ソリューションは何ですか?URLがPythonを使用して絶対的であるかどうかを確認するにはどうすればよいですか?
答えて
のPython 2
あなたはURLを解析しurlparse
モジュールを使用することができますし、それがすることにより、相対的または絶対的だならば、あなたは確認することができますホスト名が設定されているかどうかを確認します。
>>> import urlparse
>>> def is_absolute(url):
... return bool(urlparse.urlparse(url).netloc)
...
>>> is_absolute('http://www.example.com/some/path')
True
>>> is_absolute('//www.example.com/some/path')
True
>>> is_absolute('/some/path')
False
Pythonの3
urlparse
がurllib.parse
に移動するので、以下を使用されています:
from urllib.parse import urlparse
def is_absolute(url):
return bool(urlparse(url).netloc)
あなたはURLがベースURLとそれに参加するために、絶対的または相対的であるかどうかを知りたい場合は、私は通常、とにかくurlparse.urljoin
の操作を行います。
>>> from urlparse import urljoin
>>> urljoin('http://example.com/', 'http://example.com/picture.png')
'http://example.com/picture.png'
>>> urljoin('http://example1.com/', '/picture.png')
'http://example1.com/picture.png'
>>>
をこれは私がやりたいことであることが判明 - それは、2番目のURLのすべての未指定部分のデフォルトとして最初のURLを扱います。第2のものが絶対的なものであれば、それはちょうどそのものを使用します。 – rescdsk
ないについて、あなたは求めているものを確認してください。 http://
で始まるかどうかを調べるだけですか? そうなら、シンプルな正規表現がこのトリックを行います。
(EDIT:下記のコメントを参照してください - 非常に良い点を!!)
文字列が既知の接頭辞で始まるかどうかを確認するためだけに正規表現を使用しないでください。文字列の 'startswith'メソッドを使用してください。 –
また、URLのチェックは、特定のプレフィックスをチェックするよりも少し複雑です。 – rplnt
は受け入れ答えをコメントので、新しい答えとして、このコメントを書き込むことができません:IMOスキームをチェックします受け入れられた回答(bool(urlparse.urlparse(url).scheme)
)は、http://example.com/file.jpg、https://example.com/file.jpg、//example.com/file.jpgは絶対URLですが、最後にはスキーム= ''
:
is_absolute = True if '//' in my_url else False
AFAIK // foo/barは有効な相対URLです。 「相対的」とは「スキームとネットロックなし」を意味します。 – guettli
- 1. URLが画像であるかどうかを確認するにはどうすればよいですか?
- 2. URLがPythonでSeleniumを使用してファイルをダウンロードするかどうかを確認するにはどうすればよいですか?
- 3. Pythonを使用してURLを確認するにはどうすればよいですか?
- 4. ルート「URL」が存在するかどうかを確認するにはどうすればよいですか?
- 5. URLがAndroidで有効かどうかを確認するにはどうすればよいですか?
- 6. Python 3.6で絶対インポートと相対インポートを使用するにはどうすればよいですか?
- 7. 文字列がJavaの絶対URLまたは相対URLであるかどうかを確認
- 8. Scala - オブジェクトがスレッドセーフであるかどうかを確認するにはどうすればよいですか?
- 9. フォームがヘルプモードであるかどうかを確認するにはどうすればよいですか?
- 10. アンドロイドアプリがハイブリッドアプリであるかどうかを確認するにはどうすればよいですか?
- 11. Java - シーンがフルスクリーンモードであるかどうかを確認するにはどうすればよいですか?
- 12. ジェネリックメソッドパラメータが値型であるかどうかを確認するにはどうすればよいですか?
- 13. オブジェクトがコレクションであるかどうかを確認するにはどうすればよいですか? (スウィフト)
- 14. ウィンドウがオフスクリーンであるかどうかを確認するにはどうすればよいですか?
- 15. ファイルが空であるかどうかを確認するにはどうすればよいですか?
- 16. TextFieldが整数であるかどうかを確認するにはどうすればよいですか?
- 17. オブジェクトが「空」であるかどうかを確認するにはどうすればよいですか?
- 18. テキストエリアが空であるかどうかを確認するにはどうすればよいですか?
- 19. ネットパイプサービスがリッスンしているかどうかを確認するにはどうすればよいですか
- 20. コンピュータにWiFiアダプタがあるかどうかを確認するにはどうすればよいですか?
- 21. Android:アクティビティにオプションメニューがあるかどうかを確認するにはどうすればよいですか?
- 22. アプリがバックグラウンドにあるかどうかを確認するにはどうすればよいですか?
- 23. EditTextに値があるかどうかを確認するにはどうすればよいですか?
- 24. Androidアプリにメモリリークがあるかどうかを確認するにはどうすればよいですか?
- 25. メモリリークがあるかどうかを確認するにはどうすればよいですか?
- 26. Facebookのタイムラインがあるかどうかを確認するにはどうすればよいですか?
- 27. ポップアップページが開いているかどうかを確認するにはどうすればよいですか?
- 28. Pythonを使用してブラウザが実行されているかどうかを確認するにはどうすればよいですか?
- 29. 機能が部分的かどうかを確認するにはどうすればよいですか?
- 30. PyMongoを使用してユーザーがデータベースで認証されているかどうかを確認するにはどうすればよいですか?
'www.example.com/some/path'もaboluteとしてカウントしてはいけませんか? – Geo
正式には、文字列全体をパスとする相対URLです。絶対値として数えたい場合は、いくつかの前処理によって 'http://'を追加するか、 'urlparse'を使用しないでください。 –
RFCによると '// google.com'はプロトコル相対URLです。そしてあなたのコードは 'False'を返します。 – Nik