Методы и функции строк в Python. Часть 1

Методы и функции строк в 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 покушать

И все это вышеперечисленное — совсем не все, что можно делать со строками! Продолжение читайте в наших следующих статьях.

Софья Пирогова

Софья Пирогова

Главный редактор / Автор статей