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

У меня есть строка. Как удалить весь текст после определенного символа? (В этом случае ...)
После этого текст будет ..., поэтому я хочу, чтобы удалить все символы после определенного.

Ответ 1

Разделите разделитель не более одного раза и возьмите первый кусок:

sep = '...'
rest = text.split(sep, 1)[0]

Вы не сказали, что должно произойти, если разделитель отсутствует. И это, и решение Alex вернут всю строку в этом случае.

Ответ 2

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

text = 'some string... this part will be removed.'
head, sep, tail = text.partition('...')

>>> print head
some string

Если разделитель не найден, head будет содержать всю исходную строку.

Функция разбиения была добавлена ​​в Python 2.5.

раздел (...)     S.partition(sep) → (head, sep, tail)

Searches for the separator sep in S, and returns the part before it,
the separator itself, and the part after it.  If the separator is not
found, returns S and two empty strings.

Ответ 3

Без RE (который, как я предполагаю, вы хотите):

def remafterellipsis(text):
  where_ellipsis = text.find('...')
  if where_ellipsis == -1:
    return text
  return text[:where_ellipsis + 3]

или, с RE:

import re

def remwithre(text, there=re.compile(re.escape('...')+'.*')):
  return there.sub('', text)

Ответ 4

Если вы хотите удалить все после последнего вхождения разделителя в строку, я считаю, что это хорошо работает:

<separator>.join(string_to_split.split(<separator>)[:-1])

Например, если string_to_split - это путь как root/location/child/too_far.exe, и вам нужен только путь к папке, вы можете разделить на "/".join(string_to_split.split("/")[:-1]), и вы получите root/location/child

Ответ 5

другой простой способ с использованием re будет

import re, clr

text = 'some string... this part will be removed.'

text= re.search(r'(\A.*)\.\.\..+',url,re.DOTALL|re.IGNORECASE).group(1)

// text = some string