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

Оставьте комментарий