http://
https://
http://
https://
terabaytНикому нельзя доверять, даже себе(С)анекдот
как говорил Кен Томпсон “Нельзя доверять коду, который ты не полностью создал сам”.
terabaytНу во-первых это модуль стандартной библиотеки. Во-вторых от вашего велосипеда дурно пахнет, - что это за чудесные числа 9 и 10? Взяли заведомо больше чем длина схемы? Так у меня для вас плохие новости даже сейчас есть более длинные схемы
Я не говорю что нужно все писать самому, но зачем использовать библиотеку для того, что можно написать в одну строку?!
terabaytвас кто-то обманул, программирование это обычная инженерная деятельность.
это же программирование - искусство!, а не тупое заучивание функций библиотек!
'{0}/{1}/{2}/'.format(*url.split('/'))
dimy44спасибо большое!
PooHв примере было только https и не заведомо больше а с первого символа после https://
Во-вторых от вашего велосипеда дурно пахнет, - что это за чудесные числа 9 и 10? Взяли заведомо больше чем длина схемы? Так у меня для вас плохие новости даже сейчас есть более длинные схемы
PooHвозможно для вас да, но для меня это искусство. “Вместе с эволюцией социальных эстетических норм и оценок искусством получила право называться любая деятельность, направленная на создание эстетически-выразительных форм”
вас кто-то обманул, программирование это обычная инженерная деятельность.
PooHя очень люблю по минимуму использовать ресурсы и если сказано (даны такие примеры) что строка начинается с https:// то не вижу надобности учитывать все возможные варианты и нагружать этим систему!
Во-вторых от вашего велосипеда дурно пахнет
import time t1 = time.time() url="https://www.google.ru/#q=python" for i in range(1000000): new_url = url[:url[9:].index('/')+10] print (time.time()-t1 ) #0.7009713649749756
import time t1 = time.time() url="https://www.google.ru/#q=python" for i in range(1000000): '{0}/{1}/{2}/'.format(*url.split('/')) print (time.time()-t1 ) #1.2687904834747314
import time, urllib.parse t1 = time.time() url="https://www.google.ru/#q=python" for i in range(1000000): urllib.parse.urlsplit(url).netloc print (time.time()-t1 ) #2.5874969959259033
terabaytНа них лежит ответственность за правильный разбор любой ссылки.
зачем подключать модули, если можно одной строкой обойтись?
>>> url = "http://a/b/#q=python" >>> new_url = url[:url[9:].index('/')+10] >>> new_url 'http://a/b/
>>> url = "http://a/b#q=python" >>> new_url = url[:url[9:].index('/')+10] Traceback (most recent call last): File "<stdin>", line 1, in <module> ValueError: substring not found >>>
terabaytБиблиотечные функции проверены на всём множестве возможных данных.
зачем использовать библиотеку для того, что можно написать в одну строку?
>>> import urllib.parse >>> >>> s = 'a://b/c/d?e=f#g' >>> p = urllib.parse.urlsplit(s) >>> p SplitResult(scheme='a', netloc='b', path='/c/d', query='e=f', fragment='g') >>> out = urllib.parse.urlunsplit((p.scheme, p.netloc, '', '', '')) >>> out 'a://b' >>>
py.user.nextно в примерах были только https, а о http ничего не было сказано.
Ломаем твой код через девятку
new_url = url[:url.find('/', url.index('/')+2)+1]
>>> url = "http://google.com/#q=python" >>> new_url = url[:url.find('/', url.index('/')+2)+1] >>> print(new_url) http://google.com/ >>> url = "https://google.com/#q=python" >>> new_url = url[:url.find('/', url.index('/')+2)+1] >>> print(new_url) https://google.com/ >>> url = "htthdsfghdps://google.com/#q=python" >>> new_url = url[:url.find('/', url.index('/')+2)+1] >>> print(new_url) htthdsfghdps://google.com/ >>> url = "a://b/c/d?e=f#g" >>> new_url = url[:url.find('/', url.index('/')+2)+1] >>> print(new_url) a://b/
terabayt
вот, на все случаи:
>>> url = "http://google.com" >>> new_url = url[:url.find('/', url.index('/')+2)+1] >>> print(new_url) >>>
py.user.nextда, неудобно получилось )
new_url = (url+'/')[:url.find('/', url.index('/')+2)]