Каков наилучший способ удалить последний бит строки, следуя определенному признанному шаблону? Например:Замена последней части строки после шаблона
s = 'some Strings-and-stuff - SomeOther Strings-and-stuff - TAke.THis last -part away.txt'
вернется:
'some Strings-and-stuff - SomeOther Strings-and-stuff'
при работе на некоторой функции, которая выглядит для шаблона «-
» и удаляет последнюю строку после последней ' - '
происходит.
EDIT: Ответ был дан, чтобы быть:
new_string = ' - '.join(s.split(' - ')[0:-1])
Другие вещи, которые я пробовал:
>>> re.sub(r'(.*) - ', '', s[::-1])[::-1]
'some Strings-and-stuff'
Используя предложенную .split()
функцию, я могу получить выход этим:
>>> p = s.split(' - ')
>>> p.pop()
'TAke.THis last -part away.txt'
>>> ' - '.join(p)
'some Strings-and-stuff - SomeOther Strings-and-stuff'
Это работает, но другой предложенный ответ - лучший способ избавиться от не одного лайнера pop()
или del
функции.
Split по " - ", удалите последнюю часть и разрушите остальные. – HamZa
Как распознается начальная часть строки? – Ewan
Он действительно хочет две из этих частей после того, как дефис будет удален. @chase Я предполагаю, что вам нужно будет указать, какой шаблон вы хотите удалить, чтобы я предложил вам регулярное выражение. –