Методы строк для начинающих
У строк в Python есть множество полезных методов для того, чтобы дать возможность делать со строками различные полезные и нужные действия.
Методы похожи на функции, их тоже можно вызывать и, так же как и функции, они могут возвращать результат своей работы. Отличие же методов в том, что они привязаны к определенному типу данных и, например, методы строк могут быть вызваны только у строк.
Все методы строк можно посмотреть в нашем справочнике , а вот несколько примеров того, как вызывать методы строк.
string = "Hello world!"print(string.lower()) # hello world!print(string.upper()) # HELLO WORLD!
Начинающему программисту важно помнить, что методы не меняют исходную строку. Строки в Python вообще нельзя изменить. Если вы хотите поменять все ее символы, например, на символы нижнего регистра, нужно присвоить строке новое значение
string = "Hello world!"string = string.lower()
Индексы строк ¶
Бывает так, что иногда появляется необходимость выбирать отдельные символы из строки. В Python для этого необходимо использовать квадратные скобки. В таблице ниже приведены примеры получения символа строки по индексу строки Python, помещенной в переменную string .
Код | Результат | Описание |
---|---|---|
s[0] | P | Первый символ |
s[1] | y | Второй символ |
s[-1] | n | Последний символ |
s[-2] | o | Предпоследний символ |
Как вы видите, необходимо учитывать, что номером индекса первого символа будет [0] Отрицательный индекс будет отсчитывать символы с конца строки. Распространенная ошибка: предположим, что мы пытаемся задать индекс s[12] . Но в примере выше мы имеем всего шесть элементов строки, и логично что Python выдаст ошибку следующего содержания:
IndexError: string index out of range
Срезы строк ¶
Срез используется для выделения части строки. Он состоит из индекса и диапазона. Ниже расположены несколько примеров со строкой
string = 'абвгдежзик'
0 1 2 3 4 5 6 7 8 9
а б в г д е ж з и к
Фрагмент кода | Результат | Описание |
---|---|---|
string[ 2 : 5 ] | вгд | Символы с индексом 2, 3, 4 |
string[ : 5 ] | абвгд | Первые пять символов |
string[ 5 : ] | ежзик | Символы, начиная с индекса 5 и до конца |
string[ -2 : ] | ик | Последние два символа |
string[ : ] | абвгдежзик | Вся строка |
string[1 : 7 : 2] | бге | Со второго по шестой символы, через один |
string[ : : -1 ] | кизжедгвба | Обратный шаг, строка наоборот |
Базовая структура среза выглядит следующим образом: Строка [начальный\_символ : конечный_символ + 1]
Срезы не включают явное расположение окончания строки. Например, в приведенном выше примере string[2:5] , Python выведет символы с индексами 2, 3 и 4, но не символ с индексом 5.
Мы можем оставить, вместо индекса начала или окончания строки, пустоту. Пустота на месте индекса начала будет по умолчанию равна нулю. Итак, string[:5] выведет первые пять символов строки string. А в случае string[5:] , Python покажет символы, начиная с индекса 5 и до конца строки. Если же использовать отрицательные индексы, мы получим символы с конца строки. Например, string[-2:] — это последние два символа.
Также существует необязательный третий аргумент, который указывает на шаг среза строки. Например, string[1:7:2] берет каждый второй символ из строки с индексом 1, 3 и 5.
Хотите выучить Python на практике?
Убираем конкретные символы из строки
С поомщью str.replace мы можем менять какие-то символы на другие. Если мы просто хотим убрать какие-то символы, тогда просто заменяем их на пустую строку. str.replace() будет применять замену ко всем найденным совподениям.
s="Hello$ Python3$" s1=s.replace("$", "") print (s1) # Результат: Hello Python3Если мы можем указать ограничение для количества совпадений, чтобы не убирать все символы.
s="Hello$ Python3$" s1=s.replace("$", "", 1) print (s1) # Результат: Hello Python3$С помощью ' re.sub '
re. sub (pattern, repl, string, count=0, flags=0)
Возвращает строку, полученную путем замены крайних левых неперекрывающихся
совпадений с шаблоном в строке на значение repl. Если совпадения с шаблоном
не найдены, возвращается неизмененная строка
— Из документации Python'а
Если мы хотим убрать символы, то просто заменяем совпадения на пустую строку.
s="Hello$@& Python3$" import re s1=re.sub("[$|@|&]","",s) print (s1) # Результат: Hello Python3
- Заменяемый шаблон → “[ $ | @ | & ]”
- [ ] используется для определения множества
- $ | @ | & → будет искать $ или @ или &
- Заменяем на пустую строку
- Если вышеуказанные символы заменяются найдены, то они заменяются на пустую строку
Убрать все символы, кроме букв
С помощью 'isalpha()'
isalpha() используется для того, чтобы проверять, состоит ли строка только из букв. Возвращает True если является буквой. Мы будем проходить по каждому символу строки и проверять является ли он буквой.
Пример
s="Hello$@ Python3&" s1="".join(c for c in s if c.isalpha()) print (s1) # Результат: HelloPython(c for c in s if c.isalpha())
Перед нами объект генератор, содержащий все буквы из строки:
s1=””.join(c for c in s if c.isalpha())””.join будет соединять все символы в одну строку.
С помощью 'filter()'
s = "Hello$@ Python3&" f = filter(str.isalpha, s) s1 = "".join(f) print(s1)f = filter(str.isalpha, s)
Функция filter() будет применять str.isalpha метод для каждого элемента строки, и если получаем истину , то мы возвращаем элемент. В противном случае - пропускаем.
Функция filter() вернет итератор, содержащий все буквы переданной строки, а join() будем "склеиват" все элементы друг с другом.
С помощью 're.sub()'
s = "Hello$@ Python3$" import re s1 = re.sub("[^A-Za-z]", "", s) print (s1) # Результат: HelloPythonРассмотрим s1 = re.sub(“[^A-Za-z]”, ””, s)
- “[ A-Za-z]”* → Ищет все символы, кроме букв. Если в начале множества указать * , тогда к шаблону будут подходить все те символы, которые НЕ указаны в множестве. (для русских слов используйте [^А-Яа-я] - прим. ред.)
- Все символы, удовлетворяющие шаблону будут заменены на пустую строку.
- Все символы, кроме букв, будут убраны.
Убрать все символы, кроме букв и чисел
С помощью 'isalnum()'
isalnum() используется, когда мы хотим определить состоит строка только из чисел или букв.
Пройдемся по каждому символу строки, что-бы выявить нужные символы.
s = "Hello$@ Python3&" s1 = "".join(c for c in s if c.isalnum()) print(s1) # Результат: HelloPython3С помощью 're.sub()'
s = "Hello$@ Python3&_" import re s1 = re.sub("[^A-Za-z0-9]", "", s) print(s1) # Результат: HelloPython3
- “[^A-Za-z0–9]” → Этот шаблон будет искать все символы, кроме букв и цифр.
- Все найденные символы будут заменены на пустую строку
- Все символы, кроме букв и цифры убраны.
Убрать все числа из строки, с помощью регулярных выражений
С помощью 're.sub()'
s = "Hello347 Python3$" import re s1 = re.sub("[0-9]", "", s) print(s1) # Результат: Hello Python$
- [0-9] - цифры от 0 до 9
- re.sub(“[0–9]”, ””, s) - если есть совпадения, заменяем на пустую строку
Убираем все символы из строки кроме цифр
С помощью 'isdecimal()'
isdecimal() возвращает истину, если все символы строки являются цифрами, в противном случае возвращается ложь.
s = "1-2$3%4 5a" s1 = "".join(c for c in s if c.isdecimal()) print(s1) # Результат: 12345Пороходим по каждому символу строки и проверяем и является ли он цифрой. "".join() соединяет все элементы.
С помощью 're.sub()'
s = "1-2$3%4 5a" import re s1 = re.sub("[^0-9]", "", s) print(s1) # Результат: 12345Рассмотрим s1 = re.sub(“[^0–9]”, ””, s)
- [^0-9] будет искать все символы кроме от 0 до 9
- re.sub(“[^0–9]”, ””, s) все символы кроме цифр будут заменены на пустую строку.
С помощью 'filter()'
s = "1-2$3%4 5a" f = filter(str.isdecimal, s) s1 = "".join(f) print(s1) # Результат: 12345Рассмотрим f = filter(str.isdecimal, s)
Функция filter() будет выполнять str.isdecimal метод для каждого символа, если он возвращает истину, то добовляет его в генератор. Затем генератор распаковывается в готовую строку с помощью метода join() .
Примечание
Строки в Python являются неизменяемыми объектами, поэтому все вышеуказаные методы убирает символы из данной строки и возвращает новую, они не меняют состояние оригинальной строки.
Рекомендуем хостинг TIMEWEB
Стабильный хостинг, на котором располагается социальная сеть EVILEG. Для проектов на Django рекомендуем VDS хостинг.
По статье задано0 вопрос(ов)
Подписка на обсуждение 4
Подписка на раздел 73Вам это нравится? Поделитесь в социальных сетях!
5 простых способов удалить символ из строки
Существует несколько методов, позволяющих удалить определенный символ из строки:
- Примитивный метод.
- Функция replace().
- Срезы и конкатенация.
- Метод join() и генератор списков.
- Метод translate()
Важная деталь — строки в Python неизменяемы. Исходная строка останется нетронутой, а новую вернут методы, о которых написано выше.
Задачи по строкам и решения к ним у нас в телеграм канале PythonTurbo
1. Примитивный метод удаления символа из строки
Суть этого метода проста. Мы пишем цикл и создаем новую пустую строку. Цикл работает так: все символы кроме элемента с индексом n помещаются в новую строку. ( n — индекс элемента, который нам нужно удалить)
input_str = "pythonist" # Выводим в консоль исходную строку print ("Исходная строка: " + input_str) result_str = "" for i in range(0, len(input_str)): if i != 3: result_str = result_str + input_str[i] # Выводим в консоль строку после удаления i-го элемента print ("Строка после удаления i-го элемента: " + result_str)
Исходная строка: pythonist Строка после удаления i-го элемента: pytonist
2. Удаление элемента из строки с помощью метода replace()
str = "pythonist" print ("Исходная строка: " + str) res_str = str.replace('t', '') # Удаление всех 't' print("Строка после удаления всех символов t: " + res_str) # Удаление только первой t res_str = str.replace('t', '', 1) print ("Строка после удаления первого t: " + res_str)
Исходная строка: pythonist Строка после удаления всех символов t: pyhonis Строка после удаления первого t: pyhonist
Мини-задачка для вашей тренировки метода replace()
«Напишите программу на Python для получения строки из заданной строки, в которой все вхождения первого символа заменены на ‘$’, кроме самого первого символа.»
Пример: print(change_char(‘restart’))
»»» resta$t
Решение задачки можно глянуть у нас в канале
3. Удаление символа с помощью срезов и конкатенации
str = "pythonist" print ("Исходная строка: " + str) # Удаляем элемент с индексом 3 # с помощью срезов и объединения res_str = str[:3] + str[4:] print ("Строка после удаления символа: " + res_str
Исходная строка: pythonist Строка после удаления символа: pytonist
4. Удаление символа с помощью метода join() и генераторов списков
Суть этого метода в том, чтобы конвертировать строку в эквивалентный список. После этого все элементы кроме того, который мы собираемся удалить, объединяются в строку.
str = "pythonist" print("Исходная строка: " + str) # Удаление элемента с индексом 2 # с помощью join() и генератора списков res_str = ''.join([str[i] for i in range(len(str)) if i != 2]) print("Строка после удаления символа: " + res_str)
Исходная строка: pythonist Строка после удаления символа: pyhonist
5. Удаление символа из строки с помощью метода translate()
str = 'pythonist123pythonist' print(str.translate())
Удаление определенных символов из строки в Python
Одной из распространенных задач, которые возникают при работе со строками в Python, является необходимость удалить определенные символы из строки. Например, может потребоваться удалить все знаки препинания из текста. Предположим, дана следующая строка:
text = "Привет, мир! Как твои дела?"
Требуется удалить все знаки препинания, то есть символы , , ! и ? .
Решение задачи
Python предоставляет несколько способов для решения этой задачи. Один из наиболее простых и эффективных способов — использование метода replace() .
Метод replace() в Python принимает два аргумента: символ (или подстроку), который нужно заменить, и символ (или подстроку), на который нужно заменить. Если второй аргумент — пустая строка, то первый аргумент просто удаляется из строки.
Важным моментом является то, что строки в Python являются неизменяемыми, поэтому метод replace() не изменяет исходную строку, а возвращает новую строку, в которой произведена замена.
Таким образом, можно пройтись циклом по каждому символу, который нужно удалить, и применить к строке метод replace() . В результате будет получена строка без этих символов.
symbols_to_remove = ". " for symbol in symbols_to_remove: text = text.replace(symbol, "")
После выполнения данного кода в переменной text будет строка «Привет мир Как твои дела».
Таким образом, удаление определенных символов из строки в Python может быть легко выполнено с помощью метода replace() .