Как удалить подстроку из строки python
Перейти к содержимому

Как удалить подстроку из строки python

How do I remove a substring from the end of a string?

user avatar

strip doesn’t mean "remove this substring". x.strip(y) treats y as a set of characters and strips any characters in that set from both ends of x .

On Python 3.9 and newer you can use the removeprefix and removesuffix methods to remove an entire substring from either side of the string:

The relevant Python Enhancement Proposal is PEP-616.

On Python 3.8 and older you can use endswith and slicing:

user avatar

If you are sure that the string only appears at the end, then the simplest way would be to use ‘replace’:

Since it seems like nobody has pointed this on out yet:

This should be more efficient than the methods using split() as no new list object is created, and this solution works for strings with several dots.

user avatar

Depends on what you know about your url and exactly what you’re tryinh to do. If you know that it will always end in ‘.com’ (or ‘.net’ or ‘.org’) then

is the quickest solution. If it’s a more general URLs then you’re probably better of looking into the urlparse library that comes with python.

If you on the other hand you simply want to remove everything after the final ‘.’ in a string then

will work. Or if you want just want everything up to the first ‘.’ then try

Starting in Python 3.9 , you can use removesuffix instead:

user avatar

If you know it’s an extension, then

This works equally well with abcdc.com or www.abcdc.com or abcdc.[anything] and is more extensible.

On any Python version:

or the one-liner:

For urls (as it seems to be a part of the topic by the given example), one can do something like this:

Both will output: (‘http://www.stackoverflow’, ‘.com’)

This can also be combined with str.endswith(suffix) if you need to just split «.com», or anything specific.

DSCLAIMER This method has a critical flaw in that the partition is not anchored to the end of the url and may return spurious results. For example, the result for the URL "www.comcast.net" is "www" (incorrect) instead of the expected "www.comcast.net". This solution therefore is evil. Don’t use it unless you know what you are doing!

This is fairly easy to type and also correctly returns the original string (no error) when the suffix ‘.com’ is missing from url .

If you mean to only strip the extension:

It works with any extension, with potential other dots existing in filename as well. It simply splits the string as a list on dots and joins it without the last element.

user avatar

user avatar

Assuming you want to remove the domain, no matter what it is (.com, .net, etc). I recommend finding the . and removing everything from that point on.

Here I’m using rfind to solve the problem of urls like abcdc.com.net which should be reduced to the name abcdc.com .

If you’re also concerned about www. s, you should explicitly check for them:

The 1 in replace is for strange edgecases like www.net.www.com

If your url gets any wilder than that look at the regex answers people have responded with.

user avatar

If you need to strip some end of a string if it exists otherwise do nothing. My best solutions. You probably will want to use one of first 2 implementations however I have included the 3rd for completeness.

For a constant suffix:

For a collection of constant suffixes the asymptotically fastest way for a large number of calls:

the final one is probably significantly faster in pypy then cpython. The regex variant is likely faster than this for virtually all cases that do not involve huge dictionaries of potential suffixes that cannot be easily represented as a regex at least in cPython.

In PyPy the regex variant is almost certainly slower for large number of calls or long strings even if the re module uses a DFA compiling regex engine as the vast majority of the overhead of the lambda’s will be optimized out by the JIT.

In cPython however the fact that your running c code for the regex compare almost certainly outweighs the algorithmic advantages of the suffix collection version in almost all cases.

Как удалить подстроку из строки python

Рассмотрим основные методы строк, которые мы можем применить в приложениях:

isalpha() : возвращает True, если строка состоит только из алфавитных символов

islower() : возвращает True, если строка состоит только из символов в нижнем регистре

isupper() : возвращает True, если все символы строки в верхнем регистре

isdigit() : возвращает True, если все символы строки — цифры

isnumeric() : возвращает True, если строка представляет собой число

startswith(str) : возвращает True, если строка начинается с подстроки str

endswith(str) : возвращает True, если строка заканчивается на подстроку str

lower() : переводит строку в нижний регистр

upper() : переводит строку в вехний регистр

title() : начальные символы всех слов в строке переводятся в верхний регистр

capitalize() : переводит в верхний регистр первую букву только самого первого слова строки

lstrip() : удаляет начальные пробелы из строки

rstrip() : удаляет конечные пробелы из строки

strip() : удаляет начальные и конечные пробелы из строки

ljust(width) : если длина строки меньше параметра width, то справа от строки добавляются пробелы, чтобы дополнить значение width, а сама строка выравнивается по левому краю

rjust(width) : если длина строки меньше параметра width, то слева от строки добавляются пробелы, чтобы дополнить значение width, а сама строка выравнивается по правому краю

center(width) : если длина строки меньше параметра width, то слева и справа от строки равномерно добавляются пробелы, чтобы дополнить значение width, а сама строка выравнивается по центру

find(str[, start [, end]) : возвращает индекс подстроки в строке. Если подстрока не найдена, возвращается число -1

replace(old, new[, num]) : заменяет в строке одну подстроку на другую

split([delimeter[, num]]) : разбивает строку на подстроки в зависимости от разделителя

join(strs) : объединяет строки в одну строку, вставляя между ними определенный разделитель

Например, если мы ожидаем ввод с клавиатуры числа, то перед преобразованием введенной строки в число можно проверить, с помощью метода isnumeric() введено ли в действительности число, и если так, то выполнить операцию преобразования:

Проверка, начинается или оканчивается строка на определенную подстроку:

Удаление пробелов в начале и в конце строки:

Дополнение строки пробелами и выравнивание:

Поиск в строке

Для поиска подстроки в строке в Python применяется метод find() , который возвращает индекс первого вхождения подстроки в строку и имеет три формы:

find(str) : поиск подстроки str ведется с начала строки до ее конца

find(str, start) : параметр start задает начальный индекс, с которого будет производиться поиск

find(str, start, end) : параметр end задает конечный индекс, до которого будет идти поиск

Если подстрока не найдена, метод возвращает -1:

Замена в строке

Для замены в строке одной подстроки на другую применяется метод replace() :

replace(old, new) : заменяет подстроку old на new

replace(old, new, num) : параметр num указывает, сколько вхождений подстроки old надо заменить на new

Разделение на подстроки

Метод split() разбивает строку на список подстрок в зависимости от разделителя. В качестве разделителя может выступать любой символ или последовательность символов. Данный метод имеет следующие формы:

split() : в качестве разделителя используется пробел

split(delimeter) : в качестве разделителя используется delimeter

split(delimeter, num) : параметр num указывает, сколько вхождений delimeter используется для разделения. Оставшаяся часть строки добавляется в список без разделения на подстроки

Соединение строк

При рассмотрении простейших операций со строками было показано, как объединять строки с помощью операции сложения. Другую возможность для соединения строк представляет метод join() : он объединяет список строк. Причем текущая строка, у которой вызывается данный метод, используется в качестве разделителя:

Вместо списка в метод join можно передать простую строку, тогда разделитель будет вставляться между символами этой строки:

Методы строк в Python

Методы строк в Python

В Python у разных типов данных есть свои методы (функции), специфичные для этого типа данных. И раз уж на прошлом уроке мы начали знакомиться со строками, то никак не пройти и мимо методов строк.

Вызов метода в Python

Для вызова метода, прибавляем точку к переменной, для которой данный метод вызывается, пишем само название метода и передаем в скобочках аргументы.

Поиск подстроки в строке Python

Для поиска подстроки в строке в Python, есть четыре метода:

  • find()
  • rfind()
  • index()
  • rindex()

Метод find() ищет индекс подстроки в строке — возвращает номер позиции символа указанного в аргументах.

В случае нескольких символов идущих подряд, Python вернет позицию, с которой начинается полное совпадение.

При обращении к несуществующей подстроке, вернется значение -1.

Метод index() тоже ищет подстроку в строке по её индексу, но в случае поиска несуществующей подстроки в отличии от find(), возвращает ошибку ValueError.

Методы rfind() и rindex() ищут подстроку с конца строки — справа.

Замена символа в строке

Метод replace() заменяет одни символы на другие, где первым параметром передаем, что заменить. А во втором параметре указываем , на что заменить.

Как удалить символ из строки?

Передадим во втором параметре пустые кавычки.

Как удалить пробелы в строке?

Первым параметром указываем пробел, а вторым параметром — пустые кавычки.

Разделить строку в Python

По умолчанию метод split() разделяет строку по пробелам и преобразует строку в список. В итоге мы получили список из трех элементов.

Разделить строку можно по любому другому символу, для этого передадим нужный символ в параметрах. При этом, сам символ удаляется из списка.

# Пример 1 — разделить по тире «-«

# Пример 2 — разделить по букве «t»

Объединить строки в Python

Несмотря на то, что метод join() является не строковым методом. Мы все равно его изучим в рамках данного урока. Поскольку join() в Python выполняет противоположную функцию метода split(). Берет элементы списка и преобразует список в строку. Имя переменной, ссылающейся на список строк — единственный передаваемый параметр метода join(). Перед точкой, мы указали разделитель — пустые кавычки.

Метод join() не работает с числовыми данными. Следующая запись приведет к ошибке.

Перед использованием метода join(), следует числа привести к строкам.

Верхний регистр строки в Python

Метод upper() приводит все буквы строки к верхнему регистру, не меняя остальных символов.

Нижний регистр строки в Python

Метод lower() приводит все буквы строки к нижнему регистру.

Подсчет количества символов

Метод count() считает, сколько раз встречается подстрока в строке, указанная в параметрах.

Проверка символов в строке

Метод isalpha() проверяет, состоит ли строка только из букв и возвращает истину или ложь.

Метод isdigit() проверяет, состоит ли строка только из цифр и возвращает истину или ложь.

Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!

Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.

Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления

Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.

Порекомендуйте эту статью друзьям:

Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):

Она выглядит вот так:

Комментарии ( 0 ):

Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *