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

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

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

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

Поэтому мне стало любопытно где она есть? И как она используется.
А так согласен - тему можно и закрыть.
pupkin2
doza_and
где она есть?
я же не говорил что где-то эта возможность есть. просто полюбопытствовал.
doza_and
:) Что касается любопытства - мне кажется вам будет интересно взглянуть на
пакеты pyparsing и ZCatalog. Если не в питоне то еще linq- Это как раз по поводу средство запросов к последовательностям данных.
pupkin2
спасибо :)
Ed
Может вам split нужен? Что-нибудь типа этого?
In [1]: 'bla1.bla2:bla3'.split('.', 1)[1].split(':', 1)[0]
Out[1]: 'bla2'
o7412369815963
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)
pupkin2
o7412369815963, большое человеческое спасибо тебе.
доволен как слон :)
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB