26

Как получить подстроку из строки в Python?

17

Я сталкиваюсь с проблемой в Python, связанной с операцией среза строк. Я хочу получить новую строку, начиная с третьего символа и до конца строки, например, используя myString[2:end].

Меня интересует следующий вопрос: если опустить вторую часть, и это будет означать "до конца", то если я опущу первую часть, начнётся ли срез с начала строки?

Заранее спасибо за помощь!

5 ответ(ов)

4

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

some_string[::-1]

Или выбрать чередующиеся символы можно так:

"H-e-l-l-o- -W-o-r-l-d"[::2] # выводит "Hello World"

Возможность шагать вперёд и назад по строке сохраняет согласованность с возможностью среза массива как с начала, так и с конца.

1

В Python функция substr() (или, точнее, использование срезов) работает иначе, чем в PHP или Perl. В этих языках формат функции выглядит так:

s = Substr(s, beginning, LENGTH)

где beginning — начальный индекс, а LENGTH — длина подстроки.

В отличие от этого, в Python срезы ожидают начальный индекс и индекс, который идет сразу после конца (это может вызвать путаницу у новичков). Таким образом, правильный способ получить подстроку, эквивалентный Substr(s, beginning, LENGTH), будет выглядеть следующим образом:

s = s[beginning : beginning + LENGTH]

Это важный момент, который стоит учитывать при переходе с языков, таких как PHP или Perl, на Python.

0

Вы на правильном пути, но с "концом" не все верно. Это называется нотация срезов. Ваш пример должен выглядеть так:

new_sub_string = myString[2:]

Если вы не указываете второй параметр, он подразумевается как конец строки.

0

Один из распространённых способов достичь этого — использовать извлечение подстроки.

my_string[a:b] возвращает подстроку с индекса a до (b - 1).

0

Вы можете использовать срезы в Python, чтобы получить различные подстроки из данной строки. Вот примеры с использованием строки text = "StackOverflow":

  1. Обратная строка:

    text[::-1]  # 'wolevO kcatS'
    
  2. Первые пять символов:

    text[:5]    # 'Stack'
    
  3. Последние пять символов:

    text[-5:]   # 'flow'
    
  4. С третьего до пятого символа:

    text[2:5]   # 'ack'
    
  5. Символы на четных позициях:

    text[1::2]  # 'tcOefo'
    

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

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь