Часть 4 - Текстовые строки
Из предыдущих частей мы уже видел с вами строки, но в этой части поговорим о них более детально и начнем с основ.
Для того что бы создать строку в языке Python нам необходимо обернуть ее в одинарные или двойные кавычки:
"Строка"
'Строка'
Интерпретатор выводит строки в одинарных кавычках, но обрабатываются любые.
И так разберемся для чего же у нас есть возможность использовать разные кавычки для строк, основная идея в том что бы использовать те или иные кавычки в сами строках, взглянем на пример:
"Вот строка, а вот текст в 'кавычках'"
'Тоже самое, но "наоборот"'
Также допускается использование трех кавычек:
"""Строка"""
'''Строка'''
Но у них есть особенность - это работа с многострочным текстом, к примеру четверостишье Бунина:
text = """В сухом лесу стреляет длинный кнут,
В кустарнике трещат коровы,
И синие подснежники цветут,
И под ногами лист шуршит дубовый.
"""
Между делом, есть разница между выводом через интерпретатор и функцию print(). Скопируйте код выше в интерпретатор - увидите:
'В сухом лесу стреляет длинный кнут,\nВ кустарнике трещат коровы,\nИ синие подснежники цветут,\nИ под ногами лист шуршит дубовый.\n'
Заметили \n? Это символ переноса строки, о нем мы поговорим позже.
А если вывести через print():
print("В сухом", 'лесу', """стреляет""", '''длинный кнут''')
Получим: В сухом лесу стреляет длинный кнут. Функция print() добавляет пробелы между аргументами.
Наконец, нам могут понадобиться пустые строки, они создаются любым из способов:
''
""
''' '''
""" """
Функция str()
У Python есть отдельная функция которая умеет создавать строку из другого типа данных - str():
str(98.6)
# '98.6'
str(1.0e4)
# '10000.0'
str(True)
# 'True'
Escape последовательность
Как и обещал ранее, подробнее об обратном слеше \ - это escape-последовательность внутри строк. Символ, стоящий перед \, получает особое значение. Наиболее распространённая последовательность \n обозначает переход на новую строку. Благодаря ей можно создать многострочные строки из однострочных. Взглянем на пример:
text = 'Один, \nДва, \nТри.'
print(text)
# Один,
# Два,
# Три.
Кроме того в Python есть последовательность табуляции \t которая помогает выравнивать текст:
print('\tабв')
абв
print('а\tбв')
а бв
print('аб\tв')
аб в
print('абв\t')
абв
В последнем примере табуляция есть, но увидеть мы ее не сможем
Рассмотрим еще один пример последовательности, но уже для работы с кавычками \' и \":
text = "\" Раз! \" Два! \" Три! \""
'" Раз! " Два! " Три! "'
print(text)
" Раз! " Два! " Три! "
Может возникнуть ситуации когда нам понадобится обратный слеш в тексте, для этого используем просто два слеша подряд вот так:
text = "Вот \\ - слеш"
print(text)
# Вот \ - слеш
Объединение строк символом +
Почти как с числами, только наоборот: для строк можно использовать оператор сложения +, который объединяет две и более строки в одну:
'Первый ' + 'Второй'
# 'Первый Второй'
'Первый' + 'Второй'
# 'ПервыйВторой'
'Первый' + ' ' + 'Второй'
# 'Первый Второй'
Строки можно даже объединять без оператора, просто расположив их одну за другой:
"Первый " "Второй"
# 'Первый Второй'
Размножение строк
Точно также как и с оператором + мы можем использовать оператор умножения *, попробуй ввести в интерпретатор следующий код по строчно:
one = "Один " * 3 + '\n'
two = "Два " * 4 + '\n'
three = "Три."
print(one + one + two, three)
Напоминаю про приоритеты, что бы первым будет выполняться оператор умножения * так как он имеет более высокий приоритет.
Извлечение символов при помощи []
Переходим к более интересной работе со строками, для того что бы получить один символ из нашей строки необходимо указать его индекс в квадратных скобках [], напомню что в языке Python есть смещение и мы начинаем с [0]:
string = "абвгд"
string[0]
# а
string[-1]
# д
string[2]
# в
Стоит учесть следующее - если мы укажем индекс больше длины строки, то получим исключение:
[image: 1771167693695-0677e478-1037-4e6e-a20a-bd48c458253d-image.webp]
Строки являются неизменными по этому если мы попробуем по индексу задать новое значение то получим исключение:
name = 'Kirill'
name[0] = 'R'
[image: 1771167852157-d43d70bd-ae42-4f9d-b1c5-835b6b81bcbe-image.webp]
И тут на помощь приходят новые функции replace() и slice(), про них поговорим позже. А пока взглянем на код:
name = 'Kirill'
name.replace('K', 'R')
# 'Ririll'
'R' + name[1:]
# Ririll
Помните про неизменность? Интерпретатор не меняет значение у переменной, а лишь выводит результат замены.
Подстроки и разделение
Материал появится по мере его написания