Удаление первой части объединенной строки с помощью Python - PullRequest
0 голосов
/ 12 июля 2010

У меня есть следующая строка:

CompilationStatistics_Compilation_StepList_Map_TimingUsage_ClockList_Clock_MinimumPeriod

Какой самый простой способ удалить первую часть (CompilationStatistics_) или последнюю часть (_MiniumuPeriod)?

Я думаю об использовании регулярных выражений, но я ожидаю, что должен быть лучший способ.

m = re.search("{.+}_{.+}", string)
m.group(2)

Ответы [ 5 ]

3 голосов
/ 12 июля 2010

'_'.join(s.split("_")[1:-1])?

Изменение числа сращиваний изменит количество получаемой вами информации: удаление «-1» приведет к удалению только первого элемента, например.

3 голосов
/ 12 июля 2010

См. Документацию Python для Строковых методов , в частности partition и rpartition:

s = "CompilationStatistics_Compilation_StepList_Map_TimingUsage_ClockList_Clock_MinimumPeriod"
print s.partition('_')[2].rpartition('_')[0]

Результат

Compilation_StepList_Map_TimingUsage_ClockList_Clock
2 голосов
/ 12 июля 2010

Все, кроме первого:

s[s.find('_') + 1:]

Все, кроме последнего:

s[0:s.rfind('_')]

Без:

s[s.find('_') + 1:s.rfind('_')]

find возвращает первый индекс строки, а rfind возвращает последний. Затем мы просто используем синтаксис слайса.

1 голос
/ 12 июля 2010

Если вам известен размер фрагментов, которые вы хотите вырезать, вы можете использовать Python , например:

s="CompilationStatistics_Compilation_StepList_Map_TimingUsage_ClockList_Clock_MinimumPeriod"
print s[22:-14]

Конечно, есть и другие способы найти нужный вам номер, например, используя String.rindex(), чтобы найти место, где начинается конец фрагмента, который вы хотите отрезать. Например:

print s[len("CompilationStatistics_"):s.rindex("_MinimumPeriod")]
0 голосов
/ 12 июля 2010

Удаление первой части выполняется тривиально с помощью split ():

s.split("_", 1)[1] # Take the second part of the string, split into 2 pieces.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...