Найти в Дзене
[PYTHON:TODAY]

Всё о строках в Python

Создание строк | Методы строк | Конкатенация строк | Срезы и индексы строк в Python
Оглавление

Содержание

  • Создание строк в Python
  • Конкатенация строк в Python
  • Методы строк в Python
  • Форматирование строк в Python
  • Индексы и срезы строк в Python

Друзья всем привет, вы на канале Python Today и сегодня мы поговорим о строках в языке Python, рассмотрим форматирование, конкатенацию, срезы и конечно методы для работы со строками.

Создание строк в Python

Строки в Python принадлежат к типу данных str/string и служат для хранения текстовых данных.

Для того, чтобы создать объект строки нам нужно нашу фразу, любой текст или символы обернуть в одинарные, двойные или тройные кавычки:

-2

Сами кавычки являются строковым литералом, которые создают в памяти объект типа string.

Разницы между одинарными и двойными кавычками нет, но вы должны использовать их последовательно. Т.е открывающая и закрывающая кавычки должны быть одного типа.

Например если мы попробуем вначале строки поставить одинарную кавычку, а в конце двойную, то получим ошибку:

-3

Внутри строк мы также можем использовать кавычки и для этого есть несколько способов.

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

-4

Второй способ, это экранировать кавычки с помощью обратного слэша:

-5

Тройные одинарные или двойные кавычки обычно используются для документации в коде, так как имеют интересные свойства. Строки заключённые в них поддерживают многострочность и не требуют использования специального символа \n для переноса строки. Внутри тройных кавычек мы так же можем вставлять двойные или одинарные кавычки:

-6

Строки как и числа в Python являются неизменяемыми объектами. Мы можем убедиться в этом создав две переменные с одинаковым именем и распечатать их id, и как видим они будут разными:

-7

Конкатенация строк в Python

Давайте поговорим о конкатенации строк и говоря простыми словами это соединение одной строки с другой.

Программируя, вы очень часто будете сталкиваться с этой операцией и первым и самым популярным способом соединения строк является операнд сложения, знак плюс "+".

-8

В операциях со строками функционал этого операнда отличается от работы с числами.

Синтаксис весьма прост мы берём две, три, пять сколько угодно строк и складываем их между собой использую операнд сложения:

-9

В Python мы так же можем использовать операнд умножения "*" при работе со строками. Операнд умножения дублирует нашу строку умножая её на переданное значение:

-10

Важным свойством строк является их длина. Длину строки мы можем узнать с помощью встроенной функции len() сокращение от слова length, что в переводе с английского означает - длина.

-11

Обратите внимание, что если передать пустую строку и вывести её длину, мы получим 0 т.е boolean значение False, а если хотя бы поставим пробел, то получим 1 эквивалентную значению True.

-12

Если вы пока не знакомы с типом данных boolean, не переживайте, позже мы его рассмотрим.

Методы строк в Python

Мы уже использовали ранее некоторые так называемые независимые функции такие как print(), type() и id().

-13

И конечно у строк есть свои методы. В чём их отличие от функций. Методы это теже самые функции которые принадлежат конкретному классу и являются его атрибутом. В данном уроке мы работаем с классом str, классом строк в Python.

Для того, чтобы увидеть список доступных методов для строк, давайте воспользуемся функцией dir() и выведем их через цикл в столбик:

-14

На первый взгляд методов у объекта строк достаточно много и даже не думайте пугаться этого или пытаться их заучивать, это попросту незачем.

По мере своей практики названия и функционал методов будут у вас откладываться в памяти, а некоторые из них с большой вероятностью вы никогда и не будете использовать.

Чтобы вызвать метод у конкретного объекта класса, мы сначала обращаемся к объекту my_obj, затем ставим точку my_obj. и далее пишем нужный нам метод в конце указывая круглые скобки my_obj.method_name() тем самым вызывая его.

Есть как простые методы например  upper() и lower() которые приводят строку к разным регистрам, или title() который возвращает первую заглавную букву:

-15

Откровенно говоря, я вот прям не вспомню когда последний раз использовал их в работе, это к вопросу о надобности и зазубревании.

И конечно есть методы более интересные, которые я использую регулярно. Например метод replace(), который принимает первым аргументом искомую подстроку, а вторым подстроку на которую нужно заменить искомую. Сам метод возвращает копию строки:

-16

Кстати обратите внимание, что при использовании какого либо метода, я заново сохраняю получаемое значение в переменную. Но что будет если я этого не сделаю:

-17

Как видим мы получаем старое значение, до использования метода. Напоминаю, что происходит это из-за того, что строки неизменяемы, поэтому всякий раз при работе с неизменяемым типом объекта мы вынуждены каждый раз сохранять результат в новую переменную либо перезаписывать старую как делаем мы.

Следующим полезным методом является метод split(), который разделят строку по переданному делителю и возвращает список:

-18

Например разделив нашу строку по пробелу, мы получим список из трёх объектов.

Склеить строку мы можем как с помощью операнда сложения, так и используя интересный метод join() который возвращает склеенную по разделителю строку из итерируемого объекта, в данном случае списка:

-19

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

Часто требуется убрать пробелы вначале или в конце строки, для этого в Python существует метод strip(). Его так же можно использовать для обрезки ненужных нам символов, передав их в качестве аргумента. Например мы хотим убрать восклицательный знак:

-20

У него есть несколько похожих методов таких как lstrip() что означает обрезать слева и rstrip() соответственно обрезать справа:

-21

Форматирование строк в Python

Порою, а точнее сказать очень часто нам требуется заполнить строку подставив в неё некоторые значения или нужные нам данные полученные в процессе выполнения программы.

-22

Вы можете встретить несколько типов форматирования строки, первый и лично мой самым любимый это так называемый метод f-строк доступный нам с версии Python 3.6 и который имеет следующий синтаксис:

-23

Например у нас есть переменная name со значением "Андрей" и строка my_string = со значением "Привет !", для того, чтобы подставить в нашу строку переменную name, мы вначале строки указываем букву f, а внутрь строки передаём в фигурных скобках переменную name. Таким образом мы можем передавать сколько угодно значений в строку, подставляя в нужные места переменные:

-24

Следующий способ форматирования строк, через строковый метод format(). Мы не указываем вначале букву f, а передаём значения в виде аргументов в сам метод:

-25

Для передачи нескольких значений, мы можем разделять аргументы запятыми добавляя в строку новые фигурные скобки. Изменить порядок переданных значений в строке, мы можем с помощью указания индексов:

-26

Так name у нас имеет индекс равный 0 и по дефолту идёт первым, мы например можем поменять местами индексы восклицательного знака и name, как результат при выводе в строке их значения так же поменяются местами.

Либо можем передать значения присваивая их через именованные аргументы:

-27

И последний, весьма старый способ который вы можете встретить в своей практике это форматирование через оператор процента:

-28

Данный метод форматирования постепенно исчезает из кода, но тем неменее встречается в книгах и старых проектах.

Индексы и срезы строк в Python

Строки в Python являются неизменяемыми и упорядоченными итерируемыми объектами. Это означает, что каждому символу в строке присвоен свой номер или так называемый индекс.

Индексация строк начинается с нуля, затем один, два и так далее по порядку до самого конца строки. С помощью индексов мы можем обращаться к значениям строк.

-29

Например у нас есть переменная my_string со значением "Python is awesome", при обращении к переменной my_string мы получаем строку целиком:

-30

Каждый символ нашей строки имеет свой индекс, начиная с 0. Так у P будет индекс равный 0, у Y равный 1 и так далее.

Для получения конкретного символа мы должны обратиться к его индексу используя квадратные скобки, передавая внутрь индекс:

-31

Окей, обратите внимание, что нет ничего сложного получить первый символ в строке, он всегда будет под индексом 0. Но как нам быть если нужно забрать последний символ.

Мы можем воспользоваться уже знакомой нам функцией len() и напечатать длину нашей строки равную 17.

-32

Давайте попробуем вывести последний символ, передав индекс 17.

-33

И мы получаем ошибку, говорящую нам о том, что данного индекса не существует. Но как же так, давайте разберёмся.

Функция len() начинает свой отсчёт с 1, именно поэтому показывает длину равную 17. Но помните что индексирование строк начинается с 0, т.е на единицу меньше чем начало отсчёта функции len().

Для того, чтобы обратиться к последнему символу во многих языках в том числе и в Python мы можем использовать конструкцию my_string[len(my_string) - 1]:

-34

Но Python не зря считается самым простым и функциональным языком и для того чтобы упростить данный пример и получить последний символ нашей строки, нам достаточно просто обратиться к индексу -1.

Нумерация отрицальтельных индексов начинается с правого края и минус единицы. Т.е буква "e" имеет индекс -1, "m" -2, "o" -3 и так далее справа налево:

-35

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

Рассматривайте срез как будто вы отрезаете кусок от торта, вот допустим вам нужен кусочек с ягодой, и мы можем вырезать его как с краю, так и из середины.

Вернёмся к нашей строке. Например нам нужно вырезать слово Python. Мы как и прежде обращаемся к строке, затем ставим квадратные скобки, указываем начальный индекс равный 0, т.е с какой буквы нам нужно отрезать и через двоеточие указываем индекс буквы по которую нужно получить срез, буква "n" имеет индекс равный 5.

-36

Но как видим срез то мы получили, только с небольшой проблемой. Буква "n" в него не попала.

Запомните, что в срез попадают буквы с указанного слева индекса, но не попадает последний символ индекса справа, и для того, чтобы получить желаемый последний символ, нужно взять индекс на единицу больший.

-37

Давайте ещё раз попробуем получить срез, на этот раз возьмём слово "is", "i" у нас имеет индекс равный 7, а "s" под 8, получается нам нужно указать срез с 7 по 8 индекс, но не забываем прибавить единицу и получается с 7 по 9.

-38

Хорошо.

Мы только что указывали индексы для среза слева и справа. Но это необязательные параметры. Так не передав вообще никакие индексы, т.е не указав никакого интервала, мы получим строку целиком:

-39

Указав индекс только с одной стороны, мы получим все значения с указанного интервала который если не указывать по умолчанию равен 0 и по указанный интервал:

-40

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

Шаг можно указать через двоеточие. Давайте создадим строку с цифрами для большей наглядности. И например укажем шаг равный 2 для всей нашей строки, в результате мы получим только нечётные числа:

-41

Т.е получаем единицу, прибавляем к ней шаг равный 2 получаем 3, далее прибавляем шаг равный 2 и получаем 5, 7 и так далее.

Если мы не укажем интервал и поставим шаг равный -1 то получим перевернутую строку:

-42

На сегодня пожалуй всё, мы рассмотрели очень важную, большую и в тоже время простую тему.

У нас будет с вами много практики и не переживайте если вы что-то не уловили. Enjoy!

На Youtube канале PYTHONTODAY ты найдёшь видеоуроки:

  • - по созданию ботов
  • - парсингу сайтов
  • - приложений на смартфон
  • - машинному обучению и big data с нуля

Освой сетевую безопасность, и задавай вопросы в клубе.

Вступай в клуб Python разработчиков!

Читайте так-же:

Функции преобразования типов данных в Python

Числа в Python

Настраиваем свой VPN

Установка VirtualBox в Ubuntu

Установка Python на Windows

Как подключить PostgreSQL к Django

Спасибо, что дочитали до конца. Вы меня очень поддержите, если поставите "Лайк", оставите комментарий или ПОДПИШИТЕСЬ на мой канал :)