Мы уже знакомы со строками и помним, что это простой тип данных.
Строки чем-то похожи на списки. С ними можно использовать: срезы, индексы, циклы, искать и заменять символы, разделять на подстроки и др, про это все мы поговорим в этой статье.
Из строковой переменной можно получить символ по его индексу.
Листинг 1.
# Создадим строковую переменную
something = "Искусство"
# Из статьи про списки мы помним, что все индексы начинаются с 0
# Получим из переменной something первую букву "П" и последнюю "О"
# Получаем букву под первым индексом
print("Буква под индексом 0: ", something[0])
# Получаем букву под индексом семь
print("Буква под индексом 7: ", something[7])
Вывод:
Буква под индексом 0: И
Буква под индексом 8: о
Давайте теперь попробуем программно получить индекс последнего символа.
Листинг 2
# Индекс последнего символа можно получить программно
# Это длина строки - 1
# Получим длину строки
length = len(something)
print("Количество символов в строке: ", str(length))
Вывод: Количество символов в строке: 9
# Теперь давайте повторим предыдущие действия, но используя расчет индекса последнего символа
print("Буква под индексом 0: ", something[0])
# Получаем букву под индексом семь
print(f"Буква под индексом {length - 1}: {something[length - 1]}")
Вывод:
Буква под индексом 0: И
Буква под индексом 8: о
Как мы видим в примере результат получился одинаковый.
Давайте теперь усложним нашу задачу, а также вспомним как работать с циклом while и методом input. Напишем программу, в которой пользователь будет сам вводить слово и индекс символа, который хочет вывести в консоль.
Листинг 3
# Создадим переменную, которая будет хранить в себе слово которое ввёл пользователь.
word = ""
# Создадим переменную, которая будет хранить в себе индекс символа
# Реализуем этот механизм в цикле while
index = ""
# Реализуем цикл
while True:
# Реализуем чтение данных, которые ввёл пользователь
if word == "":
word = input("Введите слово: ")
# Проверка ввёл ли пользователь что-то
if word == "":
print(f"Необходимо ввести слово!")
continue
# Нужно проверить, что ввели только буквы
# Для такой проверки нам поможет метод isalpha
# isalpha проверяет является ли символ в строке буквой
# Если метод вернёт false, то мы должны сообщить об ошибки формата.
elif not word.isalpha():
print(f"Введено неверный формат: {word}")
word = ""
continue
index = input("Укажите индекс символа (целое число): ")
# Проверка ввёл ли пользователь что-то
if index == "":
print(f"Необходимо ввести целое число!")
continue
# Теперь надо проверить, что пользователь ввёл целое число
# Нам поможет метод __contains__, который проверяет наличие символов, которые ему указали в аргументе
# Если переданный символ найдется, то метод вернёт true
elif index.__contains__(",") or index.__contains__("."):
print(f"Введено не целое число: {index}")
index = ""
continue
# Если введённые данные корректны, то выходим из цикла
break
# Выведем в консоль то, что ввёл пользователь.
print(f"Слово: {word}")
print(f"Индекс: {index}")
# Выводим символ согласно указанному пользователем индексу
print(f"Символ \"{word[int(index)]}\" соответствует индексу {index}")
Консоль:
Введите слово:
Необходимо ввести слово!
Введите слово: 1
Введено неверный формат: 1
Введите слово: Турция
Укажите индекс символа (целое число): 1.5
Введено не целое число: 1.5
Укажите индекс символа (целое число): 1,5
Введено не целое число: 1,5
Укажите индекс символа (целое число):
Необходимо ввести целое число!
Укажите индекс символа (целое число): 2
Слово: Турция
Индекс: 2
Символ "р" соответствует индексу 2
Как говорилось ранее, из строки можно получить срез. Как мы помним срез - это диапазон, который “с какого по какой” мы хотим получить.
Давайте получим срез из строки.
Листинг 5
# Создадим переменную, который хранить у нас какое-то значение
something = "Супер слово!"
# Теперь получим по ней срез и выведем результат в консоль
print(something[0: 5])
Вывод: Супер
Также мы можем получить срез по отрицательным значениям. Они используется для отсчета с конца.
ВАЖНО!
Отсчет с конца идёт с -1 т.к. мы не можем ввести -0.
Листинг 6
# Создадим переменную, который хранить у нас какое-то значение
something = "Супер слово!"
# Теперь получим по ней срез по отрицательным значениям и выведем результат в консоль
# В слове "Супео слово!" восклицательный знак "!" будет иметь индекс -1 и считам в обратном порядке справа налево
print(something[-6:-1])
Вывод:
слово
# Если мы выставим с -6, то пойдём до конца
print(something[-6:])
Вывод:
слово!
У строки можно получить её длину. Ранее мы уже использовали этот метод в Листинге 2. Этот метод называется len от английского слова length (длина).
Листинг 7
# Создадим переменную, который хранить у нас какое-то значение
something = "Супер слово!"
# Выведем в консоль длину строки
print(f"Длина строки: {len(something)}")
Важно понимать, что при получение длины строки учитываются все символы даже пробел будет является символом.
Строки можно перебирать циклом FOR.
Строка это итерируемый объект, который состоит из последовательности символов.
Перебор строки будет происходить посимвольно.
Листинг 8
# Создадим переменную, который хранить у нас какое-то значение
something = "Супер слово!"
# Переберем строку в цикле for
for char in something:
print(char)
Вывод:
С
у
п
е
р
с
л
о
в
о
!
В строках можно искать конкретные символы, считать сколько раз используется конкретный символ, заменять символы на другие символы.
Посмотрим на метод count, который считает количество вхождений, если ничего не найдется, то метод вернёт 0
Листинг 9
# Создадим переменную, который хранить у нас какое-то значение
something = "mail@gmail.com"
# Проверим сколько раз в строке используется @
print(something.count('@'))
Вывод: 1
При поиске данных в строке полезно менять регистр. В Python есть 2 метода работы с регистром lower, который приводит строку к нижнему регистру и upper, который приводит строку к верхнему регистру.
Листинг 10
# Создадим переменную, который хранить у нас какое-то значение
something = "ПуПыРкА"
# Выведем данные в нижнем регистре
print("lower ", something.lower())
# Выведем данные в верхнем регистре
print("upper ", something.upper())
Вывод:
lower пупырка
upper ПУПЫРКА
Для замены символа используется метод replace, когда мы вызываем этот метод, то мы в него должны передать 2 аргумент: 1 аргумент - что мы меняем, 2 аргумент - на что мы меняем.
Листинг 11
# Создадим переменную, который хранить у нас какое-то значение
something = "Втулка №1"
print(something)
# Давайте заменим символ "№" на "#"
something = something.replace("№", "#")
print(something)
Вывод:
Втулка №1
Втулка #1
Метод позволяет быстро заменить все вхождения одной строки на другую.
Строки можно разделить на подстроки с помощью метода split, который вернёт нам уже сразу сформированный список
Листинг 12
# Создадим переменную, который хранить у нас какое-то значение
something = "pop@mail.ru"
# Давайте разделим строку по символу @
something_list = something.split("@")
print(something_list)
Вывод: ['pop', 'mail.ru']
В этой статье мы разобрали основные методы работы с строками.
Если я что-то упустил - пишите в комментарии.
Другие статьи канала: