В python есть ли способ удалить весь текст после последнего экземпляра разделителя? - PullRequest
0 голосов
/ 16 апреля 2020

Я пытаюсь создать генератор случайных текстов в python. Я использую Markovify для создания необходимого текста, фильтр, позволяющий ему не начинать генерировать текст, если только первое слово не написано с большой буквы, и, чтобы оно не заканчивалось в «среднем предложении», нужно, чтобы программа выполняла поиск в конце вывода в передний и удалить весь текст после последнего (например) периода. Я хочу, чтобы он игнорировал все другие экземпляры выбранного разделителя (ей). Я понятия не имею, сколько экземпляров разделителя будет встречаться в сгенерированном тексте, и мне все равно не нужно знать заранее.

Просматривая это, я нашел rsplit () и попытался использовать его, но столкнулся с проблема. '' 'tweet = buff.rsplit ('. ') [- 1]' '' Сначала я попробовал описанное выше, и я думал, что это работает, пока не заметил, что все строки, напечатанные с этим, имеют только одно предложение в них. Никогда больше, чем это. Кажется, проблема в том, что текст сбрасывается в массив строк, а бит [-1] вызывает только одну запись из этого массива. '' 'tweet = buff.rsplit ('. ') - buff.rsplit ('. ') [- 1]' '' Далее я попробовал описанное выше. Я думал, что он удалит последнюю запись в массиве, и тогда я смогу просто напечатать то, что осталось. Это ... не go планировать. Я получаю ошибку «неподдерживаемый тип операнда», специально связанную с попыткой вычесть. Не уверен, что мне не хватает в этот момент.

1 Ответ

0 голосов
/ 16 апреля 2020

.rsplit имеет второй необязательный аргумент - maxsplit т.е. максимальное количество делений, которое нужно сделать . Вы можете использовать его следующим образом:

txt = 'some.text.with.dots'
all_but_last = txt.rsplit('.', 1)[0]
print(all_but_last)

Вывод:

some.text.with
...