Как удалить все символы после определенного символа в Python? - PullRequest
107 голосов
/ 25 мая 2009

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

Ответы [ 5 ]

198 голосов
/ 25 мая 2009

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

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

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

73 голосов
/ 25 мая 2009

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

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

>>> print head
some string

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

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

раздел (...) S.partition (сеп) -> (голова, сеп, хвост)

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.
11 голосов
/ 15 сентября 2015

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

<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

9 голосов
/ 25 мая 2009

Без 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)
0 голосов
/ 20 мая 2015

другим простым способом использования 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...