Есть ли способ подстроки строки в Python, чтобы получить новую строку от третьего символа до конца строки?
Может быть, как myString[2:end]
?
Если оставить вторую часть, значит 'до конца', а если оставить первую часть, то все начинается с начала?
>>> x = "Hello World!"
>>> x[2:]
'llo World!'
>>> x[:2]
'He'
>>> x[:-2]
'Hello Worl'
>>> x[-2:]
'd!'
>>> x[2:-2]
'llo Worl'
В Python эта концепция называется "нарезка", и она работает не только со строками. Посмотрите здесь для всестороннего введения.
Просто для полноты, поскольку никто больше не упоминал об этом. Третий параметр среза массива - это шаг. Таким образом, перевернуть строку очень просто:
some_string[::-1]
Или выбор альтернативных символов:
"H-e-l-l-o- -W-o-r-l-d"[::2] # outputs "Hello World"
Возможность делать шаги вперед и назад по строке поддерживает согласованность с возможностью делать срез массива с начала или конца.
Substr() обычно (т.е. в PHP и Perl) работает следующим образом:
s = Substr(s, beginning, LENGTH)
Таким образом, параметрами являются начало
и LENGTH
.
Но Python ведет себя иначе; он ожидает начало и один после END (!). Это трудно заметить новичкам. Поэтому правильная замена для Substr(s, begin, LENGTH) следующая
s = s[ beginning : beginning + LENGTH]
Распространенным способом достижения этой цели является строкой нарезки.
`Например, [А:Б] дает подстроку от индекса К (Б - 1).
Кажется, здесь не хватает одного примера: полного (неглубокого) копирования.
>>> x = "Hello World!"
>>> x
'Hello World!'
>>> x[:]
'Hello World!'
>>> x==x[:]
True
>>>
Это обычная идиома для создания копии типов последовательности (не интернированных строк), [:]
. Неглубокое копирование списка, см. Синтаксис среза списка Python, используемый без очевидной причины.
Есть ли способ подстроки в строке в 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'
Я объясняю диапазонное представление очень подробно в мой ответ, чтобы объяснить ломтик вопрос нотации.
Я хотел бы добавить два пункта для обсуждения:
'причина'[2:Нет] == 'причина'[2:] == 'ЦДО'
Это особенно полезно в функции, где вы можете'т предоставить пустое пространство в качестве аргумента:
деф подстрока(с, начала, окончания):
" и" не то"Символы удалить "старт" от начало и "конец"
символов от конца строки ы
.
подстрока('причина', 0, 3) 'азбуке' подстрока('причина', 1, Нет) 'право на изменения bcde' " и" и"в возвращение с[начало:конец]
в IDx = кусочек(2, нет) 'причина'[индекс] == 'причина'[2:] == 'ЦДО'
Может я что пропустил, но я не мог'т найти полный ответ на этой странице на исходный вопрос(ы), потому что переменные не рассматривается. Так что мне пришлось пойти на поиск.
Так как я'м еще не разрешено комментировать, позвольте мне добавить мой вывод здесь. Я'м уверен, что я был не единственный, кто заинтересован в нем, когда доступ к этой странице:
>>>myString = 'Hello World'
>>>end = 5
>>>myString[2:end]
'llo'
Если оставить первую часть, то вам
>>>myString[:end]
'Hello'
И если вы оставили : в середине, как хорошо вы получили самый простой подстроки, которая будет 5-го символа (отсчет начинается с 0, поэтому он'ы на месте пропуска в данном случае):
>>>myString[end]
' '
Если например, содержит номер счета, который начинается со смещения 6 и имеет длину 9, после этого можно извлечь номер счета таким образом: счет = mystring совсем[6:][:9]
.
Если ОП признает, что, возможно, они захотят попробовать, в экспериментальной моды,
myString[2:][:999999]
Он работает - ошибка не возникает, и не по умолчанию 'строку обивка' происходит.
Используя жестко индексов само по себе может быть беспорядок.
Для того, чтобы избежать этого, 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
Используя кусочек вы получаете читабельности.