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

Есть ли способ подстроки строки в Python, чтобы получить новую строку от третьего символа до конца строки?

Может быть, как myString[2:end]?

Если оставить вторую часть, значит 'до конца', а если оставить первую часть, то все начинается с начала?

Комментарии к вопросу (1)
Решение
>>> x = "Hello World!"
>>> x[2:]
'llo World!'
>>> x[:2]
'He'
>>> x[:-2]
'Hello Worl'
>>> x[-2:]
'd!'
>>> x[2:-2]
'llo Worl'

В Python эта концепция называется "нарезка", и она работает не только со строками. Посмотрите здесь для всестороннего введения.

Комментарии (0)

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

some_string[::-1]

Или выбор альтернативных символов:

"H-e-l-l-o- -W-o-r-l-d"[::2] # outputs "Hello World"

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

Комментарии (3)

Substr() обычно (т.е. в PHP и Perl) работает следующим образом:

s = Substr(s, beginning, LENGTH)

Таким образом, параметрами являются начало и LENGTH.

Но Python ведет себя иначе; он ожидает начало и один после END (!). Это трудно заметить новичкам. Поэтому правильная замена для Substr(s, begin, LENGTH) следующая

s = s[ beginning : beginning + LENGTH]
Комментарии (4)

Распространенным способом достижения этой цели является строкой нарезки.

`Например, [А:Б] дает подстроку от индекса К (Б - 1).

Комментарии (0)

Кажется, здесь не хватает одного примера: полного (неглубокого) копирования.

>>> x = "Hello World!"
>>> x
'Hello World!'
>>> x[:]
'Hello World!'
>>> x==x[:]
True
>>>

Это обычная идиома для создания копии типов последовательности (не интернированных строк), [:]. Неглубокое копирование списка, см. Синтаксис среза списка Python, используемый без очевидной причины.

Комментарии (5)

Есть ли способ подстроки в строке в Python, чтобы получить новую строку с 3-го символа до конца строки?

может быть, как например, [2:Конец]?

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

>>> end = None
>>> myString = '1234567890'
>>> myString[2:end]
'34567890'

Диапазонное представление имеет 3 важных аргумента:

  • начать
  • стоп
  • шаг

Их значения по умолчанию, когда не дают " нет " - но мы можем передать их явно:

>>> stop = step = None
>>> start = 2
>>> myString[start:stop:step]
'34567890'

если покидает вторую часть средств 'до конца', Если оставить первую часть, она начинается с самого начала?

Да, например:

>>> start = None
>>> stop = 2
>>> myString[start:stop:step]
'12'

Обратите внимание, что мы включаем начала в срезе, но мы ходим только до, а не включая, остановка.

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

>>> myString[::-1]
'0987654321'

Я объясняю диапазонное представление очень подробно в мой ответ, чтобы объяснить ломтик вопрос нотации.

Комментарии (0)

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

new_sub_string = myString[2:]

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

Комментарии (0)

Я хотел бы добавить два пункта для обсуждения:

  1. Вы можете использовать "нет", а не на пустое пространство, чтобы указать на "Пуск" или "до конца" и:

'причина'[2:Нет] == 'причина'[2:] == 'ЦДО'

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

деф подстрока(с, начала, окончания): " и" не то"Символы удалить "старт" от начало и "конец" символов от конца строки ы.

Примеры

подстрока('причина', 0, 3) 'азбуке' подстрока('причина', 1, Нет) 'право на изменения bcde' " и" и"в возвращение с[начало:конец]

  1. Python имеет фрагмент объекты:

в IDx = кусочек(2, нет) 'причина'[индекс] == 'причина'[2:] == 'ЦДО'

Комментарии (0)

Может я что пропустил, но я не мог'т найти полный ответ на этой странице на исходный вопрос(ы), потому что переменные не рассматривается. Так что мне пришлось пойти на поиск.

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

 >>>myString = 'Hello World'
 >>>end = 5

 >>>myString[2:end]
 'llo'

Если оставить первую часть, то вам

 >>>myString[:end]
 'Hello' 

И если вы оставили : в середине, как хорошо вы получили самый простой подстроки, которая будет 5-го символа (отсчет начинается с 0, поэтому он'ы на месте пропуска в данном случае):

 >>>myString[end]
 ' '
Комментарии (0)

Если например, содержит номер счета, который начинается со смещения 6 и имеет длину 9, после этого можно извлечь номер счета таким образом: счет = mystring совсем[6:][:9].

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

myString[2:][:999999]

Он работает - ошибка не возникает, и не по умолчанию 'строку обивка' происходит.

Комментарии (3)

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

Для того, чтобы избежать этого, Python обладает встроенным фрагмент объекта ().

string = "my company has 1000$ on profit, but I lost 500$ gambling."

Если мы хотим знать, сколько денег у меня осталось.

Нормальное решение:

final = int(string[15:19]) - int(string[43:46])
print(final)
>>>500

Используя ломтиками:

EARNINGS = slice(15, 19)
LOSSES = slice(43, 46)
final = int(string[EARNINGS]) - int(string[LOSSES])
print(final)
>>>500

Используя кусочек вы получаете читабельности.

Комментарии (1)