Удаление первых x символов из строки?

116

Как удалить первые x символов из строки? Например, если бы у кого-то была строка lipsum, как бы они удалили первые 3 символа и получили бы результат sum?

tkbx
источник
5
лучший пример, если количество удаленных символов не равно количеству оставшихся символов. например"lipsumm"[3:] == "summ"
Скотт Пелак

Ответы:

213
>>> text = 'lipsum'
>>> text[3:]
'sum'

См. Официальную документацию по строкам для получения дополнительной информации и этот SO-ответ для краткого обзора нотации.

jamylak
источник
16

Другой способ (в зависимости от ваших реальных потребностей): если вы хотите вставить первые n символов и сохранить как всплывающие символы, так и измененную строку:

s = 'lipsum'
n = 3
a, s = s[:n], s[n:]
print(a)
# lip
print(s)
# sum
Кен А
источник
3
Я предполагаю, что это метафорически «выскочило», но на самом деле это всего лишь 2 разных ломтика, никакого настоящего
всплытия
9
>>> x = 'lipsum'
>>> x.replace(x[:3], '')
'sum'
tkbx
источник
11
Обратите внимание, что это длиннее в коде и также займет больше времени, так как вам придется искать подстроку перед ее заменой. Кроме того : >>> x = 'liplip' >>> x.replace(x[:3], '') ''. Конечно, вы можете исправить это, установив третий параметр (count) = 1, но это все равно займет больше времени.
jamylak 04
нет, это связано с твоим ответом, так что оно здесь. Вы можете добавить count = 1 к вашему, чтобы он все еще работал, кстати
jamylak
4

Используйте del.

Пример:

>>> text = 'lipsum'
>>> l = list(text)
>>> del l[3:]
>>> ''.join(l)
'sum'
U10-Forward
источник
1
Это работает не так, как вы думаете, text = 'liplip' >>> text.lstrip(text[:3]) ''потому что для одного аргумента chars не является префиксом; скорее, все комбинации его значений удалены:str.lstrip([chars])
jamylak
@jamylak Отредактировал мой
U10-Forward
1
Ни одно из решений не работает, например. для 'liplip'. Во второмTypeError: 'str' object does not support item deletion
джамылак
@jamylak Отредактировал снова
U10-Forward
@jamylak, теперь, если да, нужно ли вам голосовать против?
U10-Нападающий,
2

Пример отображения последних 3 цифр номера счета.

x = '1234567890'   
x.replace(x[:7], '')

o/p: '890'
Pratik Jaswant
источник
Это та же проблема, что и ответ tkbx
jamylak
например. >>> x = '12345678901234567890' >>> x.replace(x[:7], 'xxxxxxx') 'xxxxxxx890xxxxxxx890'
jamylak
Также это даже не отвечает на вопрос, вы заменяете символы на xs вместо их удаления
jamylak