В этой статье я разбираю строки в Python 3. Вы узнаете, какими свойствами обладают строки и как можно с ними работать.
Свойства строк
Я уже писал про последовательности и множества в Python 3. Строка — это неизменяемая последовательность символов, которая используется для хранения текстовой информации.
Строки в Python 3 записываются в одинарных или двойных кавычках, например так:
my_str = 'Привет Мир!' my_str = "Привет Мир!"
В коде выше, мы создали переменную my_str и привязали её к объекту ‘Привет Мир!’. Это объект класса ‘str’, и у этого объекта есть идентификатор (id). Ещё одним свойством строки является её длина.
### Код my_str = 'Привет Мир!' print(type(my_str)) print(id(my_str)) print(len(my_str)) ### Исполнение <class 'str'> 1556787785968 11
Объект ‘Привет Мир!’ изменить нельзя, так как строковый тип в Python 3 считается неизменяемым. Это означает, мы можем создать другую строку и связать её с переменной my_str, но другая строка уже будет другим объектом (с другим идентификатором). Это видно в следующем примере:
### Код my_str = 'Привет Мир!' print(id(my_str)) my_str = 'Привет Мир!!!' print(id(my_str)) ### Исполнение 1940195864816 1940197951664
Индексация строк
Помимо вышеперечисленного строки индексируются, причем двумя способами:
- слева на право, начиная с 0;
- справа на лево, начиная с -1.
Это позволяет обращаться к символам в строке по индексу (положительному или отрицательному), а также создавать срезы строк.
### Код my_str = 'Привет Мир!' print(my_str[0]) # Обращаемся к элементу по индексу print(my_str[0:3]) # Срез с 0 элемента по 3 не включительно print(my_str[0:6]) # Срез с 0 элемента по 6 не включительно print(my_str[0:6:2]) # Срез с 0 элемента по 6 не включительно, с шагом 2 ### Исполнение П При Привет Пие
Запомните, когда вы указываете срез, то указываете от какого элемента (включительно) и до какого элемента (не включительно). А также вы можете указать шаг среза, например каждый второй элемент, или каждый третий, и так далее.
Работа со строками в Python
Объединение (конкатенация) строк выполняется следующим образом:
### Код str1 = "Привет" str2 = " мир!" print(str1+str2) ### Исполнение Привет мир!
Повторение строк выполняется таким образом:
### Код str1 = "Привет" print(str1 * 3) ### Исполнение ПриветПриветПривет
При повторении строк, умножать можно только на целое число. При этом, если умножить на 0 или отрицательное число, то получим пустую строку.
Перевести строку в верхний или в нижний регистр можно с помощью методов upper и lower:
### Код my_str = 'Привет' print(my_str.upper()) print(my_str.lower()) ### Исполнение ПРИВЕТ привет
Удалить подстроку из строки: с левой стороны, с правой стороны, или с обоих сторон можно с помощью методов lstrip, rstrip, strip:
### Код my_str = 'Привет Мир!' print(my_str.lstrip('Привет ')) # Удалить подстроку с левой стороны print(my_str.rstrip('Мир!')) # Удалить подстроку с правой стороны my_str = '---Привет Мир---' print(my_str.strip('---')) # Удалить подстроку с обоих сторон ### Исполнение Мир! Привет Привет Мир
Также можем конвертировать строку в список таким способом:
### Код my_str = 'Привет Мир!' print(my_str) my_list = list(my_str) print(my_list) ### Исполнение Привет Мир! ['П', 'р', 'и', 'в', 'е', 'т', ' ', 'М', 'и', 'р', '!']
Или можем разбить строку по разделителю в список подстрок. По умолчанию, в качестве разделителя используется пробел, но можно указать свой разделитель:
### Код str1 = "Один, два, три" print(str1.split(',')) ### Исполнение ['Один', ' два', ' три']
Можем в строке заменить подстроку на другую подстроку:
### Код str1 = "Привет" print(str1.replace('вет', 'манка')) ### Исполнение Приманка
Поиск по подстроке (возвращает индекс первого совпадения):
### Код my_str = 'Привет' print(my_str.find('вет')) ### Исполнение 3
Проверка, входит ли подстрока в другую подстроку:
### Код str1 = "Привет" print('При' in str1) print('Маш' in str1) ### Исполнение True False
Можем комбинировать методы, например вывести срез строки заглавными буквами:
### Код my_str = 'Привет Мир!' print(my_str[:6].upper()) ### Исполнение ПРИВЕТ
Спецсимволы
В строках можно использовать специальные символы, например символ новой строки (\n) или табуляцию (\t).
### Код print('Привет\tМир!') print('Привет\nМир!') ### Исполнение Привет Мир! Привет Мир!
Кстати, в этом примере я не создавал переменную, как в предыдущих примерах. Функция print умеет напрямую работать со строковыми и не только строковыми объектами.
Итог
Python 3 содержит очень много методов работы со строками, изучить их все вы можете в официальной документации. В этой статье я разобрал лишь часть из них.