Итак, я использую python для синтаксического анализа веб-страниц и хочу разделить полный веб-адрес на две части. Скажем, у меня есть адрес http://www.stackoverflow.com/questions/ask. Мне понадобятся протокол и домен (например, http://www.stackoverflow.com) и путь (например, / questions / ask). Я подумал, что это может быть решено каким-то регулярным выражением, но мне это не очень удобно. Какие-либо предложения?






import re
url = "http://stackoverflow.com/questions/ask"
protocol, domain = re.match(r"(http://[^/]*)(.*)", url).groups()
Используйте модуль Python urlparse:
https://docs.python.org/library/urlparse.html
Для такой хорошо определенной и хорошо изученной проблемы, как эта, не утруждайтесь написанием собственного кода, не говоря уже о собственных регулярных выражениях. Они доставляют слишком много хлопот ;-).
Дэн прав: urlparse - ваш друг:
>>> from urlparse import urlparse
>>>
>>> parts = urlparse("http://www.stackoverflow.com/questions/ask")
>>> parts.scheme + "://" + parts.netloc
'http://www.stackoverflow.com'
>>> parts.path
'/questions/ask'
Примечание: В Python 3 это from urllib.parse import urlparse
Должен любить, что батареи включают философию. Сначала я подумал, что регулярное выражение, b / c, я не знал, что эта батарея включена. Спасибо.
Дубликат. См. stackoverflow.com/questions/258746/slicing-url-with-python и stackoverflow.com/questions/163009/urllib2-file-name.