从字符串中删除前x个字符?


116

如何从字符串中删除前x个字符?例如,如果一个人有一个字符串lipsum,他们将如何删除前三个字符并得到结果sum


5
一个更好的例子,如果删除的字符数不等于要保留的字符数。例如"lipsumm"[3:] == "summ"
Scott Pelak

Answers:


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个不同的切片,没有真正大跌眼镜
jamylak

9
>>> x = 'lipsum'
>>> x.replace(x[:3], '')
'sum'

11
请注意,这在代码中较长,并且也将花费更多时间,因为在替换之前必须搜索子字符串。另外:>>> x = 'liplip' >>> x.replace(x[:3], '') ''。当然,您可以通过使第三个参数(count)= 1来解决此问题,但仍然需要更长的时间。
jamylak 2012年

不,它与您的答案有关,因此属于此处。您可以将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转发

1
两种解决方案都不起作用,例如。为'liplip'。在第二个TypeError: 'str' object does not support item deletion
jamylak

再次@jamylak编辑
U10转发

@jamylak现在可以使用了吗?如果需要,您是否需要投票?
U10前锋

2

示例显示帐号的后3位数字。

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

o/p: '890'

这与tkbx的答案具有相同的问题
jamylak

例如。>>> x = '12345678901234567890' >>> x.replace(x[:7], 'xxxxxxx') 'xxxxxxx890xxxxxxx890'
jamylak '18

同样,这甚至没有解决问题,您是用xs 替换字符而不是删除它们
jamylak
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.