По сути, вы ничего не можете сделать, чтобы уменьшить размер .exe с помощью базового дистрибутива mingw. 550kb - это как можно меньше, потому что mingw и gcc / g ++ в целом плохо разбирают неиспользуемые функции. Около 530 КБ этого из библиотеки msvcrt.a.
Если вы действительно хотите в нее войти, вы можете перестроить библиотеку msvcrt.a с опциями компилятора -ffunction-section -fdata-section, а затем использовать -Wl, - gc-section опции компоновщика при связывании вашего приложения, и это должно быть в состоянии убрать много всего этого оттуда. Но если вы только изучаете C ++, перестройка этой библиотеки может быть немного продвинутой.
Или вы можете просто использовать MSVC, который отлично удаляет неиспользуемые функции. Тот же самый фрагмент кода, скомпилированный с MSVC, создает исполняемый файл размером 10 КБ.
Разделите разделитель не более одного раза и возьмите первый кусок:
sep = '...'
rest = 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)
Ищет разделитель sep в S и возвращает часть перед ним, сам разделитель и часть после него. Если разделитель не найдено, возвращает S и две пустые строки.
Без 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)