Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 19, 2011 08:09:24

sp3
От:
Зарегистрирован: 2010-01-12
Сообщения: 405
Репутация: +  18  -
Профиль   Отправить e-mail  

извлечение подстроки

>>> src = "base.member"
... print src[src.find('.'):]
... print src[:src.find('.')]
.member
base



Офлайн

#2 Ноя. 19, 2011 08:54:12

pupkin2
От:
Зарегистрирован: 2011-10-23
Сообщения: 103
Репутация: +  1  -
Профиль   Отправить e-mail  

извлечение подстроки

sp3, спасибо. но это как раз то банальное решение о котором я и говорил ;)



Офлайн

#3 Ноя. 19, 2011 09:31:54

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

извлечение подстроки

Небольшие личные соображения.

pupkin2
возможно есть какие-то плюшки
Считаю что предполагать это правильно, язык должен быть логичен.
Но форма:
"111222111222112"['1':'2']
Крайне неоднозначна. Надо указать первое это вхождение ‘1’ или последнее тоже самое надо писать про хвост. Оно может означать - взять все возможные комбинации из данной строки (ну или произвольной последовательности). И так далее….

Кроме того такая потребность так извлекать поддиапазоны по значению нелогична. Списки - объекты с доступом по индексу. Если нужен доступе по содержимому - используются sorteddict (или его аналоги в других языках map) и там уж можно достать данные по диапазону ключей.

Поэтому считаю что ни один нормальный язык не должен включать такую возможность.

В этом меня убеждает ее отсутствие в более или менее знакомых мне языках. Насколько знаю ее нет и в ada,perl,WolframMathematica,matlab,numpy,lex,bison,coco/R,antlr в которых кстати есть срезы и некоторые из которых ориентированы специально на работу со строками.

Поэтому мне стало любопытно где она есть? И как она используется.
А так согласен - тему можно и закрыть.



Отредактировано (Ноя. 19, 2011 09:41:00)

Офлайн

#4 Ноя. 19, 2011 09:37:37

pupkin2
От:
Зарегистрирован: 2011-10-23
Сообщения: 103
Репутация: +  1  -
Профиль   Отправить e-mail  

извлечение подстроки

doza_and
где она есть?
я же не говорил что где-то эта возможность есть. просто полюбопытствовал.



Офлайн

#5 Ноя. 19, 2011 09:49:22

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

извлечение подстроки

:) Что касается любопытства - мне кажется вам будет интересно взглянуть на
пакеты pyparsing и ZCatalog. Если не в питоне то еще linq- Это как раз по поводу средство запросов к последовательностям данных.



Офлайн

#6 Ноя. 19, 2011 09:50:46

pupkin2
От:
Зарегистрирован: 2011-10-23
Сообщения: 103
Репутация: +  1  -
Профиль   Отправить e-mail  

извлечение подстроки

спасибо :)



Офлайн

#7 Ноя. 19, 2011 17:19:08

Ed
От:
Зарегистрирован: 2008-12-13
Сообщения: 1032
Репутация: +  13  -
Профиль   Отправить e-mail  

извлечение подстроки

Может вам split нужен? Что-нибудь типа этого?

In [1]: 'bla1.bla2:bla3'.split('.', 1)[1].split(':', 1)[0]
Out[1]: 'bla2'



Отредактировано (Ноя. 19, 2011 17:19:43)

Офлайн

#8 Ноя. 19, 2011 18:32:13

o7412369815963
От:
Зарегистрирован: 2009-06-17
Сообщения: 1986
Репутация: +  32  -
Профиль   Отправить e-mail  

извлечение подстроки

pupkin2
doza_and, в с++ и java и срезов нет. именно по этому я и предположил что в пайтоне возможно есть какие-то плюшки для извлечения подстрок.
к примеру:
src = "base.member"
try:
sub = src['.':]
sub = src[:'.']
except ValueError as ex:
print("exception occurred: ", ex)
код взят от балды.
class Str(str):
def __getitem__(self, item):
r = self
if item.start: r = r[r.index(item.start)+1:]
if item.stop: r = r[:r.index(item.stop)]
return r

src = Str("base.member")
try:
print src['.':]
print src[:'.']
print src['s':'b']
except ValueError as ex:
print("exception occurred: ", ex)

Офлайн

#9 Ноя. 19, 2011 18:38:19

pupkin2
От:
Зарегистрирован: 2011-10-23
Сообщения: 103
Репутация: +  1  -
Профиль   Отправить e-mail  

извлечение подстроки

o7412369815963, большое человеческое спасибо тебе.
доволен как слон :)



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version