Python 3. Строки

В этой статье я разбираю строки в 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.




Индексация строки в Python 3
Индексация строки в Python 3




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




### Код
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 содержит очень много методов работы со строками, изучить их все вы можете в официальной документации. В этой статье я разобрал лишь часть из них.



2023-03-01T11:28:58
Python