Содержание
- Создание строк в Python
- Конкатенация строк в Python
- Методы строк в Python
- Форматирование строк в Python
- Индексы и срезы строк в Python
Друзья всем привет, вы на канале Python Today и сегодня мы поговорим о строках в языке Python, рассмотрим форматирование, конкатенацию, срезы и конечно методы для работы со строками.
Создание строк в Python
Строки в Python принадлежат к типу данных str/string и служат для хранения текстовых данных.
Для того, чтобы создать объект строки нам нужно нашу фразу, любой текст или символы обернуть в одинарные, двойные или тройные кавычки:
Сами кавычки являются строковым литералом, которые создают в памяти объект типа string.
Разницы между одинарными и двойными кавычками нет, но вы должны использовать их последовательно. Т.е открывающая и закрывающая кавычки должны быть одного типа.
Например если мы попробуем вначале строки поставить одинарную кавычку, а в конце двойную, то получим ошибку:
Внутри строк мы также можем использовать кавычки и для этого есть несколько способов.
Первый, кавычки внутри строки должны быть другого типа, т.е отличаться от внешних. Например если мы используем внешние двойные кавычки, то внутренние должны быть одинарными и наоборот:
Второй способ, это экранировать кавычки с помощью обратного слэша:
Тройные одинарные или двойные кавычки обычно используются для документации в коде, так как имеют интересные свойства. Строки заключённые в них поддерживают многострочность и не требуют использования специального символа \n для переноса строки. Внутри тройных кавычек мы так же можем вставлять двойные или одинарные кавычки:
Строки как и числа в Python являются неизменяемыми объектами. Мы можем убедиться в этом создав две переменные с одинаковым именем и распечатать их id, и как видим они будут разными:
Конкатенация строк в Python
Давайте поговорим о конкатенации строк и говоря простыми словами это соединение одной строки с другой.
Программируя, вы очень часто будете сталкиваться с этой операцией и первым и самым популярным способом соединения строк является операнд сложения, знак плюс "+".
В операциях со строками функционал этого операнда отличается от работы с числами.
Синтаксис весьма прост мы берём две, три, пять сколько угодно строк и складываем их между собой использую операнд сложения:
В Python мы так же можем использовать операнд умножения "*" при работе со строками. Операнд умножения дублирует нашу строку умножая её на переданное значение:
Важным свойством строк является их длина. Длину строки мы можем узнать с помощью встроенной функции len() сокращение от слова length, что в переводе с английского означает - длина.
Обратите внимание, что если передать пустую строку и вывести её длину, мы получим 0 т.е boolean значение False, а если хотя бы поставим пробел, то получим 1 эквивалентную значению True.
Если вы пока не знакомы с типом данных boolean, не переживайте, позже мы его рассмотрим.
Методы строк в Python
Мы уже использовали ранее некоторые так называемые независимые функции такие как print(), type() и id().
И конечно у строк есть свои методы. В чём их отличие от функций. Методы это теже самые функции которые принадлежат конкретному классу и являются его атрибутом. В данном уроке мы работаем с классом str, классом строк в Python.
Для того, чтобы увидеть список доступных методов для строк, давайте воспользуемся функцией dir() и выведем их через цикл в столбик:
На первый взгляд методов у объекта строк достаточно много и даже не думайте пугаться этого или пытаться их заучивать, это попросту незачем.
По мере своей практики названия и функционал методов будут у вас откладываться в памяти, а некоторые из них с большой вероятностью вы никогда и не будете использовать.
Чтобы вызвать метод у конкретного объекта класса, мы сначала обращаемся к объекту my_obj, затем ставим точку my_obj. и далее пишем нужный нам метод в конце указывая круглые скобки my_obj.method_name() тем самым вызывая его.
Есть как простые методы например upper() и lower() которые приводят строку к разным регистрам, или title() который возвращает первую заглавную букву:
Откровенно говоря, я вот прям не вспомню когда последний раз использовал их в работе, это к вопросу о надобности и зазубревании.
И конечно есть методы более интересные, которые я использую регулярно. Например метод replace(), который принимает первым аргументом искомую подстроку, а вторым подстроку на которую нужно заменить искомую. Сам метод возвращает копию строки:
Кстати обратите внимание, что при использовании какого либо метода, я заново сохраняю получаемое значение в переменную. Но что будет если я этого не сделаю:
Как видим мы получаем старое значение, до использования метода. Напоминаю, что происходит это из-за того, что строки неизменяемы, поэтому всякий раз при работе с неизменяемым типом объекта мы вынуждены каждый раз сохранять результат в новую переменную либо перезаписывать старую как делаем мы.
Следующим полезным методом является метод split(), который разделят строку по переданному делителю и возвращает список:
Например разделив нашу строку по пробелу, мы получим список из трёх объектов.
Склеить строку мы можем как с помощью операнда сложения, так и используя интересный метод join() который возвращает склеенную по разделителю строку из итерируемого объекта, в данном случае списка:
Перед методом указывается разделитель, и давайте например укажем дефис, а не пробел. На выходе получаем строку со словами разделёнными дефисом.
Часто требуется убрать пробелы вначале или в конце строки, для этого в Python существует метод strip(). Его так же можно использовать для обрезки ненужных нам символов, передав их в качестве аргумента. Например мы хотим убрать восклицательный знак:
У него есть несколько похожих методов таких как lstrip() что означает обрезать слева и rstrip() соответственно обрезать справа:
Форматирование строк в Python
Порою, а точнее сказать очень часто нам требуется заполнить строку подставив в неё некоторые значения или нужные нам данные полученные в процессе выполнения программы.
Вы можете встретить несколько типов форматирования строки, первый и лично мой самым любимый это так называемый метод f-строк доступный нам с версии Python 3.6 и который имеет следующий синтаксис:
Например у нас есть переменная name со значением "Андрей" и строка my_string = со значением "Привет !", для того, чтобы подставить в нашу строку переменную name, мы вначале строки указываем букву f, а внутрь строки передаём в фигурных скобках переменную name. Таким образом мы можем передавать сколько угодно значений в строку, подставляя в нужные места переменные:
Следующий способ форматирования строк, через строковый метод format(). Мы не указываем вначале букву f, а передаём значения в виде аргументов в сам метод:
Для передачи нескольких значений, мы можем разделять аргументы запятыми добавляя в строку новые фигурные скобки. Изменить порядок переданных значений в строке, мы можем с помощью указания индексов:
Так name у нас имеет индекс равный 0 и по дефолту идёт первым, мы например можем поменять местами индексы восклицательного знака и name, как результат при выводе в строке их значения так же поменяются местами.
Либо можем передать значения присваивая их через именованные аргументы:
И последний, весьма старый способ который вы можете встретить в своей практике это форматирование через оператор процента:
Данный метод форматирования постепенно исчезает из кода, но тем неменее встречается в книгах и старых проектах.
Индексы и срезы строк в Python
Строки в Python являются неизменяемыми и упорядоченными итерируемыми объектами. Это означает, что каждому символу в строке присвоен свой номер или так называемый индекс.
Индексация строк начинается с нуля, затем один, два и так далее по порядку до самого конца строки. С помощью индексов мы можем обращаться к значениям строк.
Например у нас есть переменная my_string со значением "Python is awesome", при обращении к переменной my_string мы получаем строку целиком:
Каждый символ нашей строки имеет свой индекс, начиная с 0. Так у P будет индекс равный 0, у Y равный 1 и так далее.
Для получения конкретного символа мы должны обратиться к его индексу используя квадратные скобки, передавая внутрь индекс:
Окей, обратите внимание, что нет ничего сложного получить первый символ в строке, он всегда будет под индексом 0. Но как нам быть если нужно забрать последний символ.
Мы можем воспользоваться уже знакомой нам функцией len() и напечатать длину нашей строки равную 17.
Давайте попробуем вывести последний символ, передав индекс 17.
И мы получаем ошибку, говорящую нам о том, что данного индекса не существует. Но как же так, давайте разберёмся.
Функция len() начинает свой отсчёт с 1, именно поэтому показывает длину равную 17. Но помните что индексирование строк начинается с 0, т.е на единицу меньше чем начало отсчёта функции len().
Для того, чтобы обратиться к последнему символу во многих языках в том числе и в Python мы можем использовать конструкцию my_string[len(my_string) - 1]:
Но Python не зря считается самым простым и функциональным языком и для того чтобы упростить данный пример и получить последний символ нашей строки, нам достаточно просто обратиться к индексу -1.
Нумерация отрицальтельных индексов начинается с правого края и минус единицы. Т.е буква "e" имеет индекс -1, "m" -2, "o" -3 и так далее справа налево:
Конечно же мы можем сразу получать несколько символов из строки, делается это с помощью так называемого среза. Это очень крутая и полезная штука, например в парсинге данных, когда мы конкретно можем задать с какого по какой индекс нужно забрать явки, пароли и другие важные данные из строки.
Рассматривайте срез как будто вы отрезаете кусок от торта, вот допустим вам нужен кусочек с ягодой, и мы можем вырезать его как с краю, так и из середины.
Вернёмся к нашей строке. Например нам нужно вырезать слово Python. Мы как и прежде обращаемся к строке, затем ставим квадратные скобки, указываем начальный индекс равный 0, т.е с какой буквы нам нужно отрезать и через двоеточие указываем индекс буквы по которую нужно получить срез, буква "n" имеет индекс равный 5.
Но как видим срез то мы получили, только с небольшой проблемой. Буква "n" в него не попала.
Запомните, что в срез попадают буквы с указанного слева индекса, но не попадает последний символ индекса справа, и для того, чтобы получить желаемый последний символ, нужно взять индекс на единицу больший.
Давайте ещё раз попробуем получить срез, на этот раз возьмём слово "is", "i" у нас имеет индекс равный 7, а "s" под 8, получается нам нужно указать срез с 7 по 8 индекс, но не забываем прибавить единицу и получается с 7 по 9.
Хорошо.
Мы только что указывали индексы для среза слева и справа. Но это необязательные параметры. Так не передав вообще никакие индексы, т.е не указав никакого интервала, мы получим строку целиком:
Указав индекс только с одной стороны, мы получим все значения с указанного интервала который если не указывать по умолчанию равен 0 и по указанный интервал:
У срезов так же присутствует третий необязательный параметр, это шаг. По умолчанию он равен единице и поэтому мы получаем буквы идущие друг за другом.
Шаг можно указать через двоеточие. Давайте создадим строку с цифрами для большей наглядности. И например укажем шаг равный 2 для всей нашей строки, в результате мы получим только нечётные числа:
Т.е получаем единицу, прибавляем к ней шаг равный 2 получаем 3, далее прибавляем шаг равный 2 и получаем 5, 7 и так далее.
Если мы не укажем интервал и поставим шаг равный -1 то получим перевернутую строку:
На сегодня пожалуй всё, мы рассмотрели очень важную, большую и в тоже время простую тему.
У нас будет с вами много практики и не переживайте если вы что-то не уловили. Enjoy!
На Youtube канале PYTHONTODAY ты найдёшь видеоуроки:
- - по созданию ботов
- - парсингу сайтов
- - приложений на смартфон
- - машинному обучению и big data с нуля
Освой сетевую безопасность, и задавай вопросы в клубе.
Вступай в клуб Python разработчиков!
Читайте так-же:
Функции преобразования типов данных в Python
Числа в Python
Настраиваем свой VPN
Установка VirtualBox в Ubuntu
Установка Python на Windows
Как подключить PostgreSQL к Django
Спасибо, что дочитали до конца. Вы меня очень поддержите, если поставите "Лайк", оставите комментарий или ПОДПИШИТЕСЬ на мой канал :)