Найти тему
Удалёнка

Python. Работа со строками

Учимся выполнять основные действия над строковым типом данных в 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'