Найти в Дзене
Timeweb Cloud

Индексация и разделение строк в Python 3

Оглавление
📜 Читайте также: Python: как преобразовать список в строку

Строковый тип данных в Python – это набор символов, которые могут быть буквами, цифрами, знаками пунктуации и другими специальными знаками. Как и другие структуры данных, использующие последовательности, строки могут быть доступны через индексы и разделены на подстроки.

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

Индексация строк

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

Например, существует переменная something, которая содержит текст "Example text.", тогда первая буква "E" будет иметь индекс 0, а последний знак "." - 12. Даже пробел между словами "Example" и "text" имеет свой собственный индекс - 7.

Индексы у "Example text." будут представлены далее: для буквы “E” – 0, “x” – 1, “a” – 2 и т.д. Для последних двух “t” и “.” – 11 и 12 соответственно.

Получение символов по положительным индексам

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

something = "Example text."

print(something[5])

Результат выполнения кода:

l

Здесь мы обращаемся к символу, находящемуся на позиции 5 в строке "Example text.". Поскольку буква "l" находится на позиции 5, именно она и будет выведена на экран.

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

Получение символов по отрицательным индексам

Кроме положительных индексов, в Python 3 существуют отрицательные, которые позволяют также получить доступ к символам в строке. В отличие от положительных индексов, которые начинаются с 0 и увеличиваются на 1, отрицательные начинаются с -1 и уменьшаются на 1 для каждого следующего символа. Они могут понадобиться, если необходимо достать элементы, которые находятся ближе к концу строки.

Отрицательные индексы у "Example text." будут представлены далее: для буквы “E” – -13, “x” – -12, “a” – -11 и т.д. Для последних двух “t” и “.” – -2 и -1 соответственно.

Например, для текста из примера выше буква “l” находится на позиции -8. Мы можем отобразить ее тем же способом, как делали немного ранее:

print(something[-8])

Результат выполнения кода:

l

Разделение строк на части

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

Чтобы вызвать определенный фрагмент, воспользуемся синтаксисом среза, который выглядит следующим образом:

string[x:y]

Где x - это позиция начала среза (включая его), а y - позиция его конца (не включая его). Например, если нужно выполнить вывод слова “text” из “Example text.”, то в этом случае создадим следующий срез:

print(something[8:12])

Результат выполнения кода:

text

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

string[:y]

Например, чтобы отобразить первое слово, содержащееся в переменной something, выполним следующий код:

print(something[:7])

Результат выполнения кода:

Example

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

string[x:]

Например, чтобы отобразить только слово с точкой "text." из содержимого переменной something, создадим срез:

print(something[8:])

Результат выполнения кода:

text.

Отрицательные индексы, также как и положительные используются в Python 3 для формирования срезов. При их использовании, необходимо начинать с меньшего числа, потому что соответствующий ему символ идет раньше. Как говорилось ранее, это происходит из-за того, что все символы в строке прикреплены к определенному отрицательному индексу, начиная с -1 для последнего символа и уменьшаясь до -n для первого, где n - это длина строки.

Ниже будет представлен пример:

print(something[-5:-2])

Результат выполнения кода:

tex

Определение шага при создании срезов

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

В рассмотренном ранее примере вывода подстроки "text" мы не указывали параметр шага, что эквивалентно заданию шага 1:

print(something[8:12])

Результат выполнения кода:

text

Если мы установим значение шага 1, то вывод будет тот же, что и раньше:

print(something[8:12:1])

Результат выполнения кода:

text

В случае, когда будет задано значение шага больше 1, часть символов будет проигнорирована. В следующем примере будет проигнорирован каждый нечетный (второй) элемент:

print(something[0:13:2])

Результат выполнения кода:

Eapetx.

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

print(something[0:13:5])

Результат выполнения кода:

Elx

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

print(something[::5])

Результат выполнения кода:

Elx

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

print(something[::-1])

Результат выполнения кода:

.txet elpmaxE

Когда мы используем отрицательный шаг и он больше 1, то каждый n-й символ будет проигнорирован. Например:

print(something[::-3])

Результат выполнения кода:

.eemE

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

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

Способы подсчета

При взаимодействии с символьными строками в Python, возможно использование методов для расчета и вывода индексов символов. Данные методы пригодятся для ограничения количества символов на ввод или для проверки строк на различия.

Один из таких методов - len(). Это встроенная функция, которая возвращает длину объекта, в том числе строки.

Для примера, отобразим размер строки из примеров выше:

print(len(something))

Результат:

13

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

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

print(len("Определение длины строки с помощью метода len()"))

Результат выполнения кода:

47

Кроме того, для подсчета количества элементов строки можно использовать метод str.count(), который возвращает количество вхождений заданной подстроки (или символа) в строку. Например, для вычисления числа букв "t" в строке, можно использовать следующий код:

text = "Example text for this method"

print(text.count("t"))

Результат выполнения кода:

4

Результат выполнения кода будет равен 4, однако стоит отметить, что при вычислении методом str.count() учитывается регистр.

Чтобы найти все буквы строки несмотря на регистр, возможно использовать метод str.lower(), который предварительно приведет все символы к нижнему регистру.

Теперь рассмотрим применение метода str.count() для целого слова, а не отдельной буквы:

books = “I was reading a book about the history of the book, and it mentioned that the word ‘book’ appears over and over again throughout the history of literature, from ancient scrolls to modern e-books.”

print(books.count("book"))

Результат:

4

В строке books слово "book" упоминается четыре раза.

Для нахождения позиции элементов или их последовательностей возможно использовать метод str.find(). Он возвращает индекс первого найденного символа/последовательности. В качестве примера выполним поиск буквы "s" среди элементов переменной books:

print(books.find("s"))

Результат:

4

Также стоит заметить, что если метод str.find() не находит указанный символ или последовательность в строке, то он возвращает значение -1.

Для поиска последовательности "book" в строке books воспользуемся методом str.find(). Его результатом будет индекс первого вхождения буквы "b", который можно получить с помощью вызова метода find() с "book" в качестве аргумента. Например:

print(books.find("book"))

Результат:

16

Чтобы найти позицию третьего слова "book", можно передать второй аргумент в метод find(), указав индекс, с которого начать поиск. Например, чтобы начать поиск с позиции 47, нужно вызвать метод find() следующим образом:

print(books.find("book”,47))

Результат:

84

В этом примере первая последовательность букв "book" встречается на индексе 84, при том, что поиск начинался с 47.

Для выполнения поиска элементов между индексами 85 и -2 можно использовать третий и четвертый аргументы метода find(), соответствующие отрезку в котором будет выполняться поиск. Например:

print(books.find("book",85,-2))

Результат:

189

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

Заключение

В заключение можно отметить, что работа со строками в Python 3 становится намного проще и эффективнее благодаря возможностям индексации и разделения строк. Они позволяют получить доступ к символам в строке, определить их количество и местоположение, а также разбить строку на подстроки для дальнейшей обработки.

Кстати, в официальном канале Timeweb Cloud собрали комьюнити из специалистов, которые говорят про IT-тренды, делятся полезными инструкциями и даже приглашают к себе работать.💥