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