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

По сути, вы ничего не можете сделать, чтобы уменьшить размер .exe с помощью базового дистрибутива mingw. 550kb - это как можно меньше, потому что mingw и gcc / g ++ в целом плохо разбирают неиспользуемые функции. Около 530 КБ этого из библиотеки msvcrt.a.

Если вы действительно хотите в нее войти, вы можете перестроить библиотеку msvcrt.a с опциями компилятора -ffunction-section -fdata-section, а затем использовать -Wl, - gc-section опции компоновщика при связывании вашего приложения, и это должно быть в состоянии убрать много всего этого оттуда. Но если вы только изучаете C ++, перестройка этой библиотеки может быть немного продвинутой.

Или вы можете просто использовать MSVC, который отлично удаляет неиспользуемые функции. Тот же самый фрагмент кода, скомпилированный с MSVC, создает исполняемый файл размером 10 КБ.

126
задан brasofilo 18 September 2013 в 23:23
поделиться

3 ответа

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

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

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

221
ответ дан 24 November 2019 в 00:50
поделиться

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

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)

 Ищет разделитель sep в S и возвращает часть перед ним,
сам разделитель и часть после него. Если разделитель не
найдено, возвращает S и две пустые строки.
77
ответ дан 24 November 2019 в 00:50
поделиться

Без 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)
9
ответ дан 24 November 2019 в 00:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: