Как получить подстроку из строки в Python?
Я сталкиваюсь с проблемой в Python, связанной с операцией среза строк. Я хочу получить новую строку, начиная с третьего символа и до конца строки, например, используя myString[2:end]
.
Меня интересует следующий вопрос: если опустить вторую часть, и это будет означать "до конца", то если я опущу первую часть, начнётся ли срез с начала строки?
Заранее спасибо за помощь!
5 ответ(ов)
Для полноты картины, так как никто другой об этом не упомянул. Третий параметр в срезе массива — это шаг. Так что реверсировать строку так же просто, как:
some_string[::-1]
Или выбрать чередующиеся символы можно так:
"H-e-l-l-o- -W-o-r-l-d"[::2] # выводит "Hello World"
Возможность шагать вперёд и назад по строке сохраняет согласованность с возможностью среза массива как с начала, так и с конца.
В Python функция substr()
(или, точнее, использование срезов) работает иначе, чем в PHP или Perl. В этих языках формат функции выглядит так:
s = Substr(s, beginning, LENGTH)
где beginning
— начальный индекс, а LENGTH
— длина подстроки.
В отличие от этого, в Python срезы ожидают начальный индекс и индекс, который идет сразу после конца (это может вызвать путаницу у новичков). Таким образом, правильный способ получить подстроку, эквивалентный Substr(s, beginning, LENGTH)
, будет выглядеть следующим образом:
s = s[beginning : beginning + LENGTH]
Это важный момент, который стоит учитывать при переходе с языков, таких как PHP или Perl, на Python.
Вы на правильном пути, но с "концом" не все верно. Это называется нотация срезов. Ваш пример должен выглядеть так:
new_sub_string = myString[2:]
Если вы не указываете второй параметр, он подразумевается как конец строки.
Один из распространённых способов достичь этого — использовать извлечение подстроки.
my_string[a:b]
возвращает подстроку с индекса a до (b - 1).
Вы можете использовать срезы в Python, чтобы получить различные подстроки из данной строки. Вот примеры с использованием строки text = "StackOverflow"
:
Обратная строка:
text[::-1] # 'wolevO kcatS'
Первые пять символов:
text[:5] # 'Stack'
Последние пять символов:
text[-5:] # 'flow'
С третьего до пятого символа:
text[2:5] # 'ack'
Символы на четных позициях:
text[1::2] # 'tcOefo'
Таким образом, с помощью срезов вы можете легко извлекать нужные части строки.
Есть ли в Python метод подстроки 'contains' для строк?
Как удалить пробелы?
Объединение двух столбцов текста в DataFrame pandas
Как получить имя функции в виде строки?
Вывод строки в текстовый файл