Найти в Дзене

Обучение python ч.10 перации над строками

Строковые значения в Python, да и в большинстве других языков, являются одними из самых распространённых. Нередко для работы с пользователями, сбора, обработки и вывода информации мы используем строковые значения, поэтому важно знать основные операции, используемые при работе со строками. Строковое значение в Python (далее «строка», «строки»), это набор отдельных символов Unicode, при объявлении строки в коде используется следующая форма: str_1 = "Mark"
str_2 = 'Mark' То есть, переменной присваивается строка, её обязательно оборачивать в кавычки. Либо в двойные, либо в одинарные. Особенной разницы между ними нет. Объединение строк Если вы хотите объединить (конкатенировать) значение двух строчных переменных, то вам необходимо использовать символ +: name = "Mark "
surname = 'Johnson' result = name + surname # Mark Johnson Также при конкатенации можно добавить произвольное строчное значение: name = "Mark "
surname = 'Johnson' result = name + surname + ": mjohnson@gmail.com" # Mark J
Оглавление

Строковые значения в Python, да и в большинстве других языков, являются одними из самых распространённых. Нередко для работы с пользователями, сбора, обработки и вывода информации мы используем строковые значения, поэтому важно знать основные операции, используемые при работе со строками. Строковое значение в Python (далее «строка», «строки»), это набор отдельных символов Unicode, при объявлении строки в коде используется следующая форма:

str_1 = "Mark"
str_2 = 'Mark'

То есть, переменной присваивается строка, её обязательно оборачивать в кавычки. Либо в двойные, либо в одинарные. Особенной разницы между ними нет.

Объединение строк

Если вы хотите объединить (конкатенировать) значение двух строчных переменных, то вам необходимо использовать символ +:

name = "Mark "
surname = 'Johnson'

result = name + surname # Mark Johnson

Также при конкатенации можно добавить произвольное строчное значение:

name = "Mark "
surname = 'Johnson'

result = name + surname + ": mjohnson@gmail.com" # Mark Johnson: mjohnson@gmail.com

Экранированные последовательности

Представим ситуацию. Вам нужно написать текст, в котором присутствует цитата, например:

quote = "И он сказал: "Встань и иди""

Это вызовет ошибку интерпретатора, т.к. кавычки в данном случае являются синтаксическим инструментом, определяющим строку, но интерпретатор увидит строку только в этой области:

quote = "И он сказал: "

Ведь он ждёт открывающих и закрывающих кавычек. А последующие кавычки считает отдельной последовательностью, т.е. интерпретатор, условно увидит эту инструкцию вот так:

quote = "И он сказал: "
Встань и иди""

Первая строка без ошибок. Вторая – одна сплошная ошибка. Чтобы исправить эту ситуацию нужно экранировать кавычки в тексте при помощи символа \:

quote = "И он сказал: \"Встань и иди\""

Или так:

quote = 'И он сказал: \'Встань и иди\''

Тогда эти кавычки будут интерпретированы как текст. Если вы не хотите экранировать кавычки, можете использовать разные типы кавычек в одном выражении. В двойных кавычках можно не экранировать одинарные:

quote = "И он сказал: 'Встань и иди'"

В одинарных кавычках можно не экранировать двойные:

quote = 'И он сказал: "Встань и иди"'

Помимо символа обратного слеша \ есть ещё ряд подобных символов, основные из них: «\\» - экранирование самого символа, остаётся один «\».

print("Один слеш: \\")

Выведет:

Один слеш: \

Хотя в тексте мы явно указали два обратных слеша. «\n» - перевод строки. Переводит часть строчного значения на новую строку.

print("- Назови моё имя..\n- Хайзенберг")

Выведет:

- Назови моё имя..
- Хайзенберг

Другие escape последовательности

Сравниваем строки

Иногда, в наши приложения могут приходить строчные данные, которые необходимо проверить на соответствие определённому шаблону. Допустим, мы отправляем запрос на сайт, проверяя статус заказа. Он может быть: failed или success, если статус success, то выполняем определённые действия, иначе – ничего не делаем.

Для этого нам достаточно провести простое логическое сравнение двух строк:

status = get_status()
true_status = status == "success" # boolean

if true_status:
print("That's good")

Если строки равны друг другу, то возвращается True, иначе – False.

Вхождение в строку

Иногда, нам необходимо проверить, есть ли в конкретном фрагменте текста слово или словосочетание, это сделать также несложно, при помощи ключевого слова in:

string = "Мама мыла раму"
if "раму" in string:
print("Success!")

При работе со сбором данных и написанием всяких чат-ботов – незаменимое и изящное решение языка. Но мы не всегда можем знать, в каком регистре находится искомое слово, например, оно начинается с большой буквы, а мы ищем с маленькой. Де-факто, слово в тексте присутствует, но найдено оно не будет.

Например, при таких условиях поиска в консоль ничего не выведется:

string = "Мама мыла Раму"
if "раму" in string:
print("Success!")

Для того чтобы исправить эту проблему мы можем перевести рассматриваемую строку и слово, которое мы ищем в один общий регистр. Для этого есть специальные функции: lower() и upper().

Функция lower() переводит строку в нижний регистр, а upper() в верхний:

string = "Мама мыла Раму" print(string.lower()) print(string.upper())

В консоль выведет:

мама мыла раму МАМА МЫЛА РАМУ

Используя данные функции мы значительно улучшили и обезопасили нашу программу:

string = "Мама мыла Раму"
find = "РаМу"

if find.lower() in string.lower():
print("Success!")

Теперь слова и буквы могут быть в совершенно любом регистре, но вхождение подстроки в строку будет найдено (если искомое слово присутствует в строке в любом регистре).

Длина строки

Длина строки определяется при помощи функции len:

word = "Привет, юный питонист!"
print(len(word))

Выводит:

22

Обращение по индексу

Строка – это последовательность символов Unicode, поэтому её можно интерпретировать как некоторую структуру данных, по типу списка, в котором каждый элемент имеет свою позицию. К каждому элементу строки можно обращаться как к элементу списка:

word = "Привет, юный питонист!"
print(word[0])
print(word[1])
print(word[2])
print(word[3])

Выводит:

П р и в

Подобно элементам списка, символы строки можно получать и с конца, при помощи отрицательного индекса:

word = "Привет, юный питонист!"
print(word[-1])
print(word[-2])
print(word[-3])
print(word[-4])

Выводит:

! т с и

Получить часть строки. Слайсы

Часто необходимо обрезать длинную строку, сделав её меньше. Например, получить только первые 10 символов. Замечательная новость в том, что мы можем обрезать строку на основе механизма слайсов:

word = "Привет, юный питонист!"
print(word[:10:])

Выведет:

Привет, юн

следующий урок