Учимся выполнять основные действия над строковым типом данных в Python: создание, экранирование, конкатенация и умножение, срезы, форматирование, строковые методы.Logo Python Course Lesson 4Курс "Программирование на Python"
Что такое строка и как ее создать в Python?
Строки в Python - упорядоченные неизменяемые последовательности символов, используемые для хранения и представления текстовой информации, поэтому с помощью строк можно работать со всем, что может быть представлено в текстовой форме.
Последовательности в Python
Последовательность(Sequence Type) — итерируемый контейнер, к элементам которого есть эффективный доступ с использованием целочисленных индексов.
Последовательности могут быть как изменяемыми, так и неизменяемыми. Размерность и состав созданной однажды неизменяемой последовательности не может меняться, вместо этого обычно создаётся новая последовательность.
Примеры последовательностей в стандартной библиотеке Python:
Список (list) - изменяемая
Кортеж (tuple) - неизменяемая
Диапазон (range) - неизменяемая
Строка (str, unicode) - неизменяемая
Строки можно создать несколькими способами:
1. С помощью одинарных и двойных кавычек.
first_string = 'Я текст в одинарных кавычках'
second_string = "Я текст в двойных кавычках"
Строки в одинарных и двойных кавычках - одно и то же. Причина наличия двух вариантов в том, чтобы позволить вставлять в строки символы кавычек, не используя экранирование. Например вот так(обратите внимание на кавычки внутри строки):
first_string = 'Слово "Python" обычно подразумевает змею'
second_string = "I'm learning Python"
Идем дальше.
2. С помощью тройных кавычек.
Главное достоинство строк в тройных кавычках в том, что их можно использовать для записи многострочных блоков текста. Внутри такой строки возможно присутствие кавычек и апострофов, главное, чтобы не было трех кавычек подряд. Пример:
my_string = '''Это очень длинная
строка, ей нужно
много места'''
Python Строки str создание
Способы создания строк в Python
3. С помощью метода str().
Как это работает:
my_num = 12345
my_str = str(my_num)
В данном случае мы создали новую строку путем конвертации переменной другого типа(например, int).
Экранирование строк
Экранированные последовательности - это служебные наборы символов, которые позволяют вставить нестандартные символы, которые сложно ввести с клавиатуры.
В таблице перечислены самые часто используемые экранированные последовательности:
\n Перевод строки
\r Возврат каретки
\t Горизонтальная табуляция
\v Вертикальная табуляция
\uhhhh 16-битовый символ Юникода в 16-ричном представлении
\x… 16-ричное значение
\o… 8-ричное значение
Теперь посмотрим, как каждая из них работает:
# Обычная строка
>>> str = 'Моя строка вот такая'
>>> print(str)
Моя строка вот такая
# Добавим символ переноса строки
>>> str = 'Моя строка\n вот такая'
>>> print(str)
Моя строка
вот такая
# А теперь добавим возврат каретки
>>> str = 'Моя строка\n вот\r такая'
>>> print(str)
Моя строка
такая
# Горизонтальная табуляция(добавит отступ)
>>> str = '\tМоя строка вот такая'
>>> print(str)
Моя строка вот такая
# Вертикальная табуляция(добавит пустую строку)
>>> str = '\vМоя строка вот такая'
>>> print(str)
Моя строка вот такая
# Добавим китайский иероглиф в строку
>>> str = 'Моя строка \u45b2 вот такая'
>>> print(str)
Моя строка 䖲 вот такая
"Сырые строки"
Если перед открывающей кавычкой стоит символ 'r' (в любом регистре), то механизм экранирования отключается.
Это может быть нужно, например, в такой ситуации:
str = r'C:\new_file.txt'
Методы для работы со строками
Методов для работы со строками довольно много. Может возникнуть вопрос - а как же не запутаться в их многообразии? Ответ на него такой - необходимо структурировать и разбить методы по группам.
Python строки str методы
Работа со строками в Python. Классификация методов.
Итак, строки в Python поддерживают две группы методов:
Группа 1. Общие методы для всех Sequence Type данных.
В Python cуществуют 3 базовых типа Последовательностей(Sequence Type):
Списки(list)
Кортежи(tuple)
Диапазоны(range).
И также есть дополнительные типы последовательностей для:
Обработки двоичных данных(binary data) и
Текстовых строк(str).
Все эти типы данных(базовые и дополнительные) поддерживают общую группу операций. Например:
x in s Если элемент присутствует в последовательности, то возвращает True, иначе - False
x not in s Возвращает True, если элемент отсутствует в последовательности.
s + t Конкатенация(сложение) двух последовательностей
s * n Эквивалентно сложению последовательности s с собой n раз
s[i] Возвращает i-й элемент последовательности
s[i, j] Возвращает набор элементов последовательности с индексами из диапазона i <= k < j
min(s) Минимальный элемент последовательности
max(s) Максимальный элемент последовательности
len(s) Длина последовательности
s.index(x) Возвращает индекс подстроки x в строке s
s.count(x) Число вхождений подстроки x в строку s
Подробнее об общих операциях для Sequence Type данных можно почитать в официальной документации по Python.
Подытожим
Строки в Python - представители Sequence Type данных. Это значит, что они(наряду со списками, кортежами и диапазонами) поддерживают все операции, приведенные в таблице выше.
Группа 2. Дополнительные методы, которые работают только со строками
Помимо общих операций, которые мы рассмотрели в таблице выше, существуют методы, которые могут быть использованы только для работы с типом str. В ходе урока рассмотрим самые важные и часто используемые из них.
Операции со строками. Конкатенация и умножение.
Python строки str конкатенация умножение
Строки в Python. Конкатенация и умножение.
Далее будем рассматривать базовые операции, которые можно выполнять со строками. Начнем со сложения и умножения строк. Они, как мы уже выяснили выше, относятся к группе общих операций над последовательностями. Итак:
+ — оператор конкатенации строк. Он возвращает строку, состоящую из совокупности других строк.
>>> a = 'Вот так работает'
>>> b = ' конкатенация строк'
>>> a + b
'Вот так работает конкатенация строк'
2. Оператор умножения строк *
* — оператор создает несколько копий строки. Если str это строка, а n целое число, то будет создано n копий строки str.
>>> str = 'Строка'
>>> 5 * str
'СтрокаСтрокаСтрокаСтрокаСтрока'
Операции со строками. Срезы.
Срезы так же относятся к группе общих операций - они используются для всех последовательностей, а значит и для строковых переменных. Рассмотрим подробнее, что это такое и с чем его едят.
Срез (slice) — извлечение из данной строки одного символа или некоторого фрагмента подстроки или подпоследовательности.
Индекс - номер символа в строке (а также в других структурах данных: списках, кортежах). Обратите внимание, что нумерация начинается с 0. Если указать отрицательное значение индекса, то номер будет отсчитываться с конца, начиная с номера -1.
Есть три формы срезов:
1. Самая простая форма среза - взятие одного символа строки - S[i], где S - строка, i - индекс. Пример:
>>> str = 'Hello'
>>> str[0]
'H'
>>> str[4]
'o'
>>> str[-5]
'H'
>>> str[6]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IndexError: string index out of range
Python строки str индексация
2. Второй тип - срез с двумя параметрами. Т. е. S[a:b] возвращает подстроку, начиная с символа c индексом a до символа с индексом b, не включая его. Если опустить второй параметр (но поставить двоеточие), то срез берется до конца строки. Пример:
>>> str = 'Hello'
>>> str[0:4]
'Hell'
>>> str[0:5]
'Hello'
>>> str[1:3]
'el'
>>> str[1:]
'ello'
>>> str[0:]
'Hello'
3. Срез с тремя параметрами - S[a:b:d]. Третий параметр задает шаг(как в случае с функцией range), то есть будут взяты символы с индексами a, a + d, a + 2 * d и т. д. Например, при задании значения третьего параметра, равному 2, в срез попадет каждый второй символ:
>>> str = 'Hello'
>>> str[0:5:1]
'Hello'
>>> str[::1]
'Hello'
>>> str[0:5:2]
'Hlo'
>>> str[::2]
'Hlo'