Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 8, 2014 06:43:01

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

/ в начале строки

url="//****" #url="/****"
urls=url[0:2]
if(urls == "/"):
print("/")
elif(urls == "//"):
print("//")
else:
print("not")
как сделать так чтобы он показывал сколько в начале “/” в url?
и если их “//” то обрезать их

Офлайн

#2 Ноя. 8, 2014 08:35:03

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

/ в начале строки

Да што вы там столько дней мучаете))). Ну просто же все

if url.startswith('//'):
    url = url[2:]

Офлайн

#3 Ноя. 8, 2014 08:55:17

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

/ в начале строки

dimy44
Да што вы там столько дней мучаете))). Ну просто же все
это не то
url в любом случае начинается с “/”
он выводит “/” даже если первые два символа “//”
надо что то другое

Офлайн

#4 Ноя. 8, 2014 09:08:48

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

/ в начале строки

Я же написал- сначала проверить на ‘//’

def foo(text):
    if text.startswith('//'):
        print('//')
        text = text[2:]
    elif text.startswith('/'):
        print('/')
        text = text[1:]
    return text
print(foo('//blabla'))
print(foo('/blabla'))

Офлайн

#5 Ноя. 8, 2014 09:37:44

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

/ в начале строки

Egor2010
Т.е. если их в начале 4 штуки то обрезать не надо?
Ну а вообще регулярками делается это, модуль re

>>> url="//****"
>>> re.findall('^(/{,}).*', url)
['//']
>>> len(re.findall('^(/{,}).*', url)[0])
2
зная сколько символов в начале, можете как угодно преобразовывать исходную строку для нужного вам вида



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

#6 Ноя. 8, 2014 10:10:52

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

/ в начале строки

обрезать

url = '/////****'
while url.startswith('/'):
    url = url[1:]

Офлайн

#7 Ноя. 8, 2014 12:26:33

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

/ в начале строки

JOHN_16
re.findall('^(/{,}).*', url)
/{,} == /*

>>> re.findall(r'^/+', '//abc')
['//']
>>> re.findall(r'^/+', 'abc')
[]
>>>



Отредактировано py.user.next (Ноя. 8, 2014 12:27:07)

Офлайн

#8 Ноя. 8, 2014 13:35:34

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

/ в начале строки

len(re.match(r'(/*).+', url).group(1))

Офлайн

#9 Ноя. 8, 2014 14:46:05

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

/ в начале строки

А как убрать символ “/” с конца url?
Так чтобы в цикле убирал только “/” а не всю строку

Отредактировано Egor2010 (Ноя. 8, 2014 14:51:08)

Офлайн

#10 Ноя. 8, 2014 15:47:49

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

/ в начале строки

Вот вам код, показывающий кол-во слешей в начале и конце строки

import re
url = '//***/***/'
#url = '//***/***'
#url = '***/***/'
#url = '***/***'
mo = re.match(r'(/*).*?(/*)$', url)
start, end = map(len, mo.groups())
print(start, end)
убрать слеши в конце в цикле, как вы просили
while url.endswith('/'):
    url = url[:-1]

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version