Содержание
Краткая памятка по работе со строками
- Используйте синтаксис строка[начало:конец] для вырезания подстроки.
- Помните, что начальный индекс включается, а конечный — нет.
- Для вырезания до конца строки опускайте конечный индекс: строка[начало:].
- Для вырезания с начала строки опускайте начальный индекс: строка[:конец].
- Используйте отрицательные индексы для отсчета от конца строки.
- Добавьте третий параметр (шаг) для пропуска символов: строка[::2].
- Для переворота строки используйте строка[::-1].
- Строки неизменяемы — срез всегда создает новую строку.
- Экспериментируйте с разными комбинациями индексов для лучшего понимания.
- Используйте шпаргалку для быстрого поиска нужного синтаксиса.
Что такое подстрока?
Подстрока является частью строки. То, что входит внутрь другой строки. Например, в строке ’12-08-2034′ подстрокой может быть ‘2034’, ’12’ или даже ‘-‘. Все зависит от того, какую информацию нам нужно извлечь.
Допустим, у нас есть строка с датой ’12-08-2034′. Мы хотим получить из нее только год ‘2034’. В этой строке каждый символ имеет индекс (позицию), начиная с нуля:
Получается, год начинается с индекса 6 и заканчивается на 9. Чтобы извлечь его, мы используем срез:
Срез value[6:10] берет символы с индекса 6 по 9 включительно. Формат среза:
Символ с индексом, указанным как «конец», не включается. Его можно воспринимать как естественный порядок символа, который нужно взять последним. То есть если там стоит 11, значит это будет 11 символ по порядку.
Срез является строкой
Срез всегда возвращает строку, даже если в ней только цифры. Это значит, что результат можно использовать, как обычную строку: конкатенировать, печатать, передавать в функции и так далее.
Сначала мы получили подстроку ’12-9′, а потом сделали из нее новый срез ’12’.
Срез до конца или с начала
Иногда нужно взять часть строки до конца или от начала. Такие ситуации тоже легко обрабатываются срезами:
value = ‘Hexlet’ print(value[3:]) # => let # С 3 символа до конца print(value[:3]) # => Hex # От начала до 3 символа
Если не указать границу, Python сам подставит нужное значение: начало строки или ее конец.
↩ Срезы с отрицательными индексами
Python позволяет считать слева направо и с конца строки. Для этого используются отрицательные индексы.
value = ‘Hexlet’ print(value[-1]) # => t # Последний символ print(value[3:-1]) # => le # От 3 до предпоследнего print(value[-5:3]) # => ex # С 1 до 2
Индекс -1 в этом случае соответствует последнему символу в строке. Поэтому здесь мы видим разный результат:
Это удобно, когда заранее неизвестна длина строки, но нужно взять «хвост» или «середину» строки относительно конца.
Шаг в срезах
У среза есть третий параметр под названием шаг. По умолчанию шаг равен 1, то есть символы идут подряд. Но шаг можно изменить, например, взять каждый второй символ:
- 1 задает срез ‘exle’
- шаг 2 означает, что мы берем через один символ: ‘e’ и ‘l’
Переворот строки
Отрицательный шаг позволяет перевернуть строку, что является одной из самых популярных «фишек» срезов. Для этого используют отрицательный шаг:
Срезы с отрицательным шагом
Если вы используете отрицательный шаг, помните: индексы тоже нужно указывать в обратном порядке. Иначе срез не сработает (возвратит пустую строку):
Быстрая шпаргалка
value = ‘Hexlet’ value[::] # Hexlet — вся строка value[:] # Hexlet value[::2] # Hxe — четные символы value[1::2] # elt — нечетные символы value[::-1] # telxeH — строка в обратном порядке value[5:] # t value[:5] # Hexle value[-2:1:-1] # elx — с предпоследнего до третьего
Когда делаете срез от большего индекса к меньшему, обязательно задайте отрицательный шаг, иначе срез не сработает.
Не переживайте, если сейчас не запомните все комбинации: вы быстро начнете использовать их на практике. Главное понимать, как работает базовая структура строка[начало:конец:шаг].
Базовые операции
- Конкатенация (сложение)>>>>>> S1 = ‘spam’ >>> S2 = ‘eggs’ >>> print(S1 + S2) ‘spameggs’
- Дублирование строки>>>>>> print(‘spam’ * 3) spamspamspam
- Длина строки (функция len)>>>>>> len(‘spam’) 4
- Доступ по индексу>>>>>> S = ‘spam’ >>> S[0] ‘s’ >>> S[2] ‘a’ >>> S[-2] ‘a’Как видно из примера, в Python возможен и доступ по отрицательному индексу, при этом отсчет идет от конца строки.
- Извлечение срезаОператор извлечения среза: [X:Y]. X – начало среза, а Y – окончание;символ с номером Y в срез не входит. По умолчанию первый индекс равен 0, а второй — длине строки.>>>>>> s = ‘spameggs’ >>> s[3:5] ‘me’ >>> s[2:-2] ‘ameg’ >>> s[:6] ‘spameg’ >>> s[1:] ‘pameggs’ >>> s[:] ‘spameggs’Кроме того, можно задать шаг, с которым нужно извлекать срез.>>>>>> s[::-1] ‘sggemaps’ >>> s[3:5:-1] » >>> s[2::2] ‘aeg’
>>>>>> S1 = ‘spam’ >>> S2 = ‘eggs’ >>> print(S1 + S2) ‘spameggs’
Как видно из примера, в Python возможен и доступ по отрицательному индексу, при этом отсчет идет от конца строки.
символ с номером Y в срез не входит. По умолчанию первый индекс равен 0, а второй — длине строки.
>>>>>> s[::-1] ‘sggemaps’ >>> s[3:5:-1] » >>> s[2::2] ‘aeg’
Часто задаваемые вопросы о вырезании строк в Python
Вопрос: Как вырезать часть строки в Python?
Ответ: Используйте срезы (slicing) с синтаксисом строка[начало:конец:шаг].
Вопрос: Что такое подстрока?
Ответ: Подстрока — это любая непрерывная последовательность символов внутри исходной строки.
Вопрос: Как вырезать строку с начала до определенного индекса?
Ответ: Используйте срез вида строка[:конец], где конец — индекс первого символа, который не нужно включать.
Вопрос: Как вырезать строку с определенного индекса до конца?
Ответ: Используйте срез вида строка[начало:], где начало — индекс первого символа, который нужно включить.
Вопрос: Что такое отрицательные индексы в срезах?
Ответ: Отрицательные индексы отсчитываются от конца строки. Например, -1 — это последний символ.
Вопрос: Как вырезать каждый второй символ из строки?
Ответ: Используйте шаг в срезе: строка[::2].
Вопрос: Как перевернуть строку в Python?
Ответ: Используйте срез с отрицательным шагом: строка[::-1].
Вопрос: Что такое шаг в срезах?
Ответ: Шаг определяет, через сколько символов брать следующий элемент. По умолчанию шаг равен 1.
Вопрос: Можно ли изменить исходную строку с помощью среза?
Ответ: Нет, строки в Python неизменяемы. Срез всегда создает новую строку.
Вопрос: Что произойдет, если указать индекс за пределами строки?
Ответ: Python не выдаст ошибку, а просто вернет пустую строку или обрежет срез до допустимых границ.






















