Подтвердить что ты не робот

Как получить последнюю часть строки перед определенным символом?

Я пытаюсь напечатать последнюю часть строки перед определенным символом.

Я не совсем уверен, следует ли использовать метод string.split() или нарезку строк или, возможно, что-то еще.

Вот какой код не работает, но я думаю, что он показывает логику:

x = 'http://test.com/lalala-134'
print x['-':0] # beginning at the end of the string, return everything before '-'

Обратите внимание, что число в конце будет меняться по размеру, поэтому я не могу установить точное количество с конца строки.

4b9b3361

Ответ 1

Вы ищете str.rsplit() с лимитом:

print x.rsplit('-', 1)[0]

.rsplit() выполняет поиск строки разделения с конца строки ввода, а второй аргумент ограничивает, сколько раз он будет разделить только один раз.

Другим вариантом является использование str.rpartition(), который будет разбит только один раз:

print x.rpartition('-')[0]

Для разделения только один раз, str.rpartition() является более быстрым методом; если вам нужно разделить более одного раза, вы можете использовать только str.rsplit().

Демо:

>>> x = 'http://test.com/lalala-134'
>>> print x.rsplit('-', 1)[0]
http://test.com/lalala
>>> 'something-with-a-lot-of-dashes'.rsplit('-', 1)[0]
'something-with-a-lot-of'

и то же самое с str.rpartition()

>>> print x.rpartition('-')[0]
http://test.com/lalala
>>> 'something-with-a-lot-of-dashes'.rpartition('-')[0]
'something-with-a-lot-of'