Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 5, 2014 13:18:38

Egor2010
Зарегистрирован: 2014-10-22
Сообщения: 152
Репутация: +  0  -
Профиль   Отправить e-mail  

url сайта

А там вить

http://
и
https://
код одинаково работает?

Отредактировано Egor2010 (Ноя. 5, 2014 13:21:10)

Офлайн

#2 Ноя. 5, 2014 13:32:15

PooH
От:
Зарегистрирован: 2006-12-05
Сообщения: 1948
Репутация: +  72  -
Профиль   Отправить e-mail  

url сайта

terabayt
как говорил Кен Томпсон “Нельзя доверять коду, который ты не полностью создал сам”.
Никому нельзя доверять, даже себе(С)анекдот
terabayt
Я не говорю что нужно все писать самому, но зачем использовать библиотеку для того, что можно написать в одну строку?!
Ну во-первых это модуль стандартной библиотеки. Во-вторых от вашего велосипеда дурно пахнет, - что это за чудесные числа 9 и 10? Взяли заведомо больше чем длина схемы? Так у меня для вас плохие новости даже сейчас есть более длинные схемы
terabayt
это же программирование - искусство!, а не тупое заучивание функций библиотек!
вас кто-то обманул, программирование это обычная инженерная деятельность.

просто по роду деятельности приходится возится с кучей софта написанного таким образом, очень, очень весело: шаг влево, шаг вправо, чуть изменились условия и какой нибудь из велосипедов отказывает



Вот здесь один из первых отарков съел лаборанта. Это был такой умный отарк, что понимал даже теорию относительности. Он разговаривал с лаборантом, а потом бросился на него и загрыз…

Офлайн

#3 Ноя. 5, 2014 15:43:23

dimy44
От: Евпатория
Зарегистрирован: 2012-04-21
Сообщения: 463
Репутация: +  42  -
Профиль  

url сайта

'{0}/{1}/{2}/'.format(*url.split('/'))

Офлайн

#4 Ноя. 5, 2014 16:00:38

Egor2010
Зарегистрирован: 2014-10-22
Сообщения: 152
Репутация: +  0  -
Профиль   Отправить e-mail  

url сайта

dimy44
спасибо большое!
всё отлично работает!

Офлайн

#5 Ноя. 5, 2014 18:19:28

terabayt
От: Киев
Зарегистрирован: 2011-11-26
Сообщения: 1099
Репутация: +  103  -
Профиль   Отправить e-mail  

url сайта

PooH
Во-вторых от вашего велосипеда дурно пахнет, - что это за чудесные числа 9 и 10? Взяли заведомо больше чем длина схемы? Так у меня для вас плохие новости даже сейчас есть более длинные схемы
в примере было только https и не заведомо больше а с первого символа после https://
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



————————————————
-*- Simple is better than complex -*-

Офлайн

#6 Ноя. 5, 2014 22:30:23

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10015
Репутация: +  857  -
Профиль   Отправить e-mail  

url сайта

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 (Ноя. 5, 2014 22:34:36)

Офлайн

#7 Ноя. 5, 2014 22:50:06

terabayt
От: Киев
Зарегистрирован: 2011-11-26
Сообщения: 1099
Репутация: +  103  -
Профиль   Отправить e-mail  

url сайта

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/



————————————————
-*- Simple is better than complex -*-

Отредактировано terabayt (Ноя. 5, 2014 22:52:36)

Офлайн

#8 Ноя. 6, 2014 02:01:54

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10015
Репутация: +  857  -
Профиль   Отправить e-mail  

url сайта

terabayt
вот, на все случаи:

>>> url = "http://google.com"
>>> new_url = url[:url.find('/', url.index('/')+2)+1]
>>> print(new_url)
 
>>>



Отредактировано py.user.next (Ноя. 6, 2014 02:02:06)

Офлайн

#9 Ноя. 6, 2014 02:39:24

terabayt
От: Киев
Зарегистрирован: 2011-11-26
Сообщения: 1099
Репутация: +  103  -
Профиль   Отправить e-mail  

url сайта

py.user.next
да, неудобно получилось )
new_url = (url+'/')[:url.find('/', url.index('/')+2)]



————————————————
-*- Simple is better than complex -*-

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version