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


116

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


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

Ответы:


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

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


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'

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'

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'

Это та же проблема, что и ответ tkbx
jamylak

например. >>> x = '12345678901234567890' >>> x.replace(x[:7], 'xxxxxxx') 'xxxxxxx890xxxxxxx890'
jamylak

Также это даже не отвечает на вопрос, вы заменяете символы на xs вместо их удаления
jamylak
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.