Строки
Срезы
Часто в программировании
требуется выбрать не один какой-то символ, а сразу несколько. Для этого
используются так называемые срезы. Их работу проще показать на конкретных
примерах. Пусть у нас есть наша строка:
msg = "Hello World!"
и мы хотим
выделить последнее слово «World!». Для этого в квадратных скобках
указывается начальный индекс и через двоеточие – конечный. Если мы запишем все
вот в таком виде:
msg6:11
то получим
результат «World» без
восклицательного знака. Дело в том, что последний индекс исключается из
интервала, то есть, интервал определяется как
[6: 11)
Поэтому, мы
должны записать срез так:
msg6:12
Другой пример
для выделения символов «llo»:
msg2:5
и так далее. В Python допускается не
указывать начальное или конечное значения, или даже, оба из них. Например:
msg:5
выделяет слово «Hello», а вот так:
msg6:
получим «World!». Наконец,
записав все в таком виде:
msg:
получим ту же
самую строку, не копию! Это можно проверить так:
copy = msg: print(id(copy), id(msg))
Увидим одно и то же значение id для обеих переменных, это означет, что они ссылаются на один и тот же объект.
В срезах на Python можно
дополнительно указывать шаг через двоеточие. Например, так:
msg::2
мы здесь ставим
еще одно двоеточие и указываем шаг 2, то есть, идем через символ: «HloWrd». Также
это можно комбинировать с граничными значениями:
msg:5:2 msg6::2 msg1:6:2
и использовать
отрицательный шаг:
msg::-1
в этом случае
символы будут перебираться в обратном порядке.
Обрабатываем строку в Python
Представим, что ожидается ввод числа с клавиатуры. Перед преобразованием введенной нами строки в число можно легко проверить, введено ли действительно число. Если это так, выполнится операция преобразования. Для обработки строки используем такой метод в Python, как isnumeric():
string = input("Введите какое-нибудь число: ") if string.isnumeric(): number = int(string) print(number)
Следующий пример позволяет удалять пробелы в конце и начале строки:
string = " привет мир! " string = string.strip() print(string) # привет мир!
Так можно дополнить строку пробелами и выполнить выравнивание:
print("iPhone 7:", "52000".rjust(10)) print("Huawei P10:", "36000".rjust(10))
В консоли Python будет выведено следующее:
iPhone 7 52000 Huawei P10 36000
Поиск подстроки в строке
Чтобы в Python выполнить поиск в строке, используют метод find(). Он имеет три формы и возвращает индекс 1-го вхождения подстроки в строку:
• find(str): поиск подстроки str производится с начала строки и до её конца;
• find(str, start): с помощью параметра start задаётся начальный индекс, и именно с него и выполняется поиск;
• find(str, start, end): посредством параметра end задаётся конечный индекс, поиск выполняется до него.
Когда подстрока не найдена, метод возвращает -1:
welcome = "Hello world! Goodbye world!" index = welcome.find("wor") print(index) # 6 # ищем с десятого индекса index = welcome.find("wor",10) print(index) # 21 # ищем с 10-го по 15-й индекс index = welcome.find("wor",10,15) print(index) # -1