У меня есть строка. Как удалить весь текст после определенного символа? (В данном случае ...)
Текст после ... изменится, поэтому я хочу удалить все символы после определенного.
Как удалить все символы после определенного символа в python?
Ответы (10)
Разделить на свой разделитель не более одного раза и взять первый кусок:
sep = '...'
stripped = text.split(sep, 1)[0]
Вы не сказали, что должно произойти, если разделитель отсутствует. В этом случае и это решение, и решение Алекса вернут всю строку.
Предполагая, что ваш разделитель '...', но это может быть любая строка.
text = 'some string... this part will be removed.'
head, sep, tail = text.partition('...')
>>> print head
some string
Если разделитель не найден, head будет содержать всю исходную строку.
Функция разделения была добавлена в Python 2.5.
partition(...) 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.
Если вы хотите удалить все после последнего появления разделителя в строке, я считаю, что это работает хорошо:
<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.
Без 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)
import re
test = "This is a test...we should not be able to see this"
res = re.sub(r'\.\.\..*',"",test)
print(res)
Вывод: «Это тест»
Метод find возвращает позицию символа в строке. Затем, если вы хотите удалить все с персонажа, сделайте следующее:
mystring = "123⋯567"
mystring[ 0 : mystring.index("⋯")]
>> '123'
Если вы хотите сохранить символ, добавьте 1 к позиции символа.
Из файла:
import re
sep = '...'
with open("requirements.txt") as file_in:
lines = []
for line in file_in:
res = line.split(sep, 1)[0]
print(res)
другой простой способ использования 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
Это в python 3.7, работающем со мной. В моем случае мне нужно удалить после точки в моих сборах строковых переменных
сборы = 45,05
split_string = сборы.split(., 1)
подстрока = разделенная_строка[0]
печать (подстрока)
Еще один способ удалить все символы после последнего вхождения символа в строку (предположим, что вы хотите удалить все символы после последнего "/").
path = 'I/only/want/the/containing/directory/not/the/file.txt'
while path[-1] != '/':
path = path[:-1]
path на каждой итерации, поэтому это не особенно эффективное решение, хотя я согласен, что оно должно работать.
- person joanis; 26.05.2021