Методы и функции строк в Python. Часть 1
В первой части этой статьи вы узнаете самые простые вещи, которые можно проделывать над строками.
Cтроки в Python довольно просты в использовании. Надо лишь запомнить 15-20 самых часто используемых приемов ↓
Что важно знать, перед тем как начать?
Если вы еще не читали статью Что такое строка в Python, то советуем прочесть, чтобы знать больше нюансов и полезных методов.
Строки — это неизменяемые объекты. Методы преобразования строк позволяют изменить вид и формат строки без изменения ее содержимого:
text = "Привет"
b = text.lower()
print(b) # Выведет привет
print(text)
# Выведет: Привет, так как метод .lower() не меняет изначальную строку
Базовые операции со строками
Сложение, вычитание, умножение, деление возможны только с числами? Нет!
Сложение (конкатенация)
Одна из самых полезных операций со строками — объединение, или конкатенация. Она позволяет соединять две строки в одну. Для конкатенации используется знак плюс «+»:
s1 = "Hello "
s2 = "world!"
s3 = s1 + s2
print(s3) # Выведет: Hello world!
Конкатенацию можно выполнять многократно — строки будут соединяться последовательно:
s4 = "Hello"
s5 = " "
s6 = "world!"
s7 = s4 + s5 + s6
print(s7) # Выведет: Hello world!
Также к строкам можно «прибавлять» числа и другие типы данных, предварительно преобразовав их в строку с помощью функции str():
n = 5
s8 = "Result: " + str(n)
print(s8) # Выведет: Result: 5
Операция конкатенации удобна для сборки текста из фрагментов, например, для формирования писем, отчетов и так далее. Она позволяет гибко соединять строковые данные.
Вычитание
В отличие от сложения, операции вычитания строк как таковой в Python не существует. Однако часто возникает задача удалить часть строки или подстроку из строки. Это можно сделать с помощью строковых методов:
- Метод replace() используется, чтобы «вычесть» одну подстроку из другой:
text = "Hello World"
new_text = text.replace("World", "") # Удаляем строку "World"
print(new_text) # Выведет: Hello
Метод принимает два аргумента — исходную подстроку и строку для замены. Если в качестве второго аргумента указать пустую строку "", это эффективно удалит первую подстроку из исходной строки.
- Метод lstrip() удаляет символы с начала строки:
url = "https://docs.python.org/3/"
new_url = url.lstrip("https://") # Удаляем префикс
print(new_url) # Выведет: docs.python.org/3/
- Метод rstrip() удаляет символы с конца строки:
filename = "report.pdf"
new_filename = filename.rstrip(".pdf") # Удаляем суффикс
print(new_filename) # Выведет: report
- Метод strip() — удаляют пробелы или заданные символы с обоих концов строки:
message = " уверен и не реву "
new_message = message.strip()
print(new_message)
# Без указания символов выводит "уверен и не реву" без лишних пробелов по сторонам
new_message2 = message.strip(" уве")
print(new_message2)
# С указанием удалит набор символов с краю, вне зависимости от их порядка
# И выведет: "рен и не р"
Таким образом, несмотря на отсутствие прямой операции вычитания, в Python есть все необходимое для удаления частей строк.
Дублирование (умножение)
Умножение позволяет повторять одну строку несколько раз, создавая строки нужной длины без использования циклов. Дублирование строки выполняется с помощью оператора «*». В качестве правого операнда указывается число — сколько раз нужно повторить строку:
s = "Ha"
print(s * 3) # Выведет: HaHaHa
border = "-" * 40
print(border) # Выведет: ----------------------------------------
Обратите внимание, что умножать можно только на целочисленное значение, иначе возникнет ошибка.
print("Lol" * 2.5)
# Выведет ошибку: TypeError: can't multiply sequence by non-int of type 'float'
Деление
На самом деле деление также относительно, как и вычитание. Но вполне можно разделить строку по разделителю с помощью метода .split():
s = "Я учусь в Эльбрус Буткемп"
print(s.split()) # Разделение по пробелам
# Результатом будет массив: ['Я', 'учусь', 'в', 'Эльбрус', 'Буткемп']
s2 = "Веб-разработка, UX/UI дизайн, Data Science"
print(s2.split(",")) # Разделение по запятой
# Результат: ['Веб-разработка', ' UX/UI дизайн', ' Data Science']
Замена символа в строке
Как мы уже знаем, строки в Python неизменяемы. Но иногда бывает нужно заменить в строке один символ на другой. Тогда можем перезаписать значение нашей переменной. Для этого существует несколько способов, для этого можно использовать ↓
- Срезы и конкатенацию. Для примера возьмем срез с 0 по 1 символ, добавили букву «д», а затем оставшуюся часть строки с 2 индекса:
text = "привет"
text = text[0] + "д" + text[2:]
print(text) # Выведет: пдивет
- Метод replace. Заменим все вхождения указанного символа на новый:
text = "привет"
text = text.replace("р", "в")
print(text) # Выведет: пвивет
- Форматирование строк. Создадим новую строку с нужными заменами:
text = "привет"
text = "{}в{}вет".format(text[0], text[3])
print(text) # Выведет: пвивет
Конвертация регистра
Python предоставляет методы для изменения регистра символов в строке — преобразования строчных букв в заглавные и наоборот:
- upper() — возвращает копию строки, в которой все буквенные символы преобразованы в верхний регистр
- lower() — возвращает копию строки, в которой все буквенные символы преобразованы в нижний регистр
- swapcase() — возвращает копию строки, в которой регистр каждого буквенного символа изменен на противоположный
- capitalize() — возвращает копию строки, в которой первая буква делается заглавной, а остальные строчными
- title() — каждую первую букву слова переводит в верхний регистр, а остальны делает строчными.
s = "я нЕмогУ перестатЬ думаТЬ о JavaScript"
print(s.upper()) # Я НЕМОГУ ПЕРЕСТАТЬ ДУМАТЬ О JAVASCRIPT
print(s.lower()) # я немогу перестать думать о javascript
print(s.swapcase()) # Я НеМОГу ПЕРЕСТАТь ДУМАть О jAVAsCRIPT
print(s.capitalize()) # Я немогу перестать думать о javascript
print(s.title()) # Я Немогу Перестать Думать О Javascript
Как записывать данные введенные пользователем
Функция input() считывает данные, введенные пользователем, и возвращает их в виде строки ↓
name = input("Enter your name: ")
print("Hello, " + name)
# После этого в консоли вы увидите надпись Enter your name: , где нужно будет ввести имя
# После ввода имени, например Sofia, вы нажмете Enter и получите ↓
# Hello, Sofia
Как из массива строк сделать одну большую строку
Метод join() соединяет элементы из переданного итерируемого объекта с помощью строки-разделителя:
arr = ["Я", "люблю", "покушать"]
str = " ".join(arr) # Разделителем является пробел в данном случае
print(str)
# Выведет строку: Я люблю покушать
Но если в массиве будут иметься числа или объекты других типов данных, то вы получите ошибку:
arr = ["Я", "люблю", 1, "покушать"]
str = ",".join(arr) # Разделителем является в данном случае запятая
print(str)
# Выведет ошибку: TypeError: sequence item 1: expected str instance, int found
Чтобы этого избежать вы можете сделать комбинацию map(), str(), join:
arr = ["Я", "люблю", 1, "покушать"]
str = " ".join(map(str, arr))
print(str)
# Выведет: Я люблю 1 покушать
И все это вышеперечисленное — совсем не все, что можно делать со строками! Продолжение читайте в наших следующих статьях.