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

144

如何从字符串中删除前 x 个字符?例如,如果有一个字符串 lipsum,如何删除前 3 个字符并得到结果为sum


5
如果删除的字符数不等于剩余字符数,则可以提供更好的示例。例如,"lipsumm"[3:] == "summ" - Scott Pelak
5个回答

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

查看字符串的官方文档以获取更多信息,以及SO回答获取该符号表示法的简洁概述。


25

另一种方法(取决于您的实际需求): 如果您想弹出前n个字符并保存弹出的字符和修改后的字符串:

s = 'lipsum'
n = 3
a, s = s[:n], s[n:]
print(a)
# lip
print(s)
# sum

3
我猜这是用隐喻的方式表达“弹出来了”,但实际上只是两片不同的薄片,没有真正的弹出。 - jamylak

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

11
请注意,这段代码比较长,而且由于你需要在替换子字符串之前先搜索它,所以它需要更多时间。另外:>>> x = 'liplip' >>> x.replace(x[:3], '') ''。当然,你可以通过将第三个参数(count)设置为1来解决这个问题,但是这仍然需要更长的时间。 - jamylak
不,这与你的答案有关,所以它应该放在这里。顺便说一句,你可以将count=1添加到你的代码中,这样它仍然有效。 - jamylak

4

使用del命令。

示例:

>>> text = 'lipsum'
>>> l = list(text)
>>> del l[3:]
>>> ''.join(l)
'sum'

1
这个不像你想的那样工作:text = 'liplip' >>> text.lstrip(text[:3]) '',因为对于str.lstrip([chars])来说,chars参数不是前缀;相反,它的所有值的组合都会被剥离: - jamylak
1
两个解决方案都不适用于“'liplip'”。在第二种方法中出现了“TypeError: 'str' object does not support item deletion”错误。 - jamylak
第一个解决方案仍然无法处理“'liplip'”示例,而第二个解决方案过于复杂。改进简单的内置text [3:]确实很困难。 - jamylak
你好U10-Forward,希望你不介意,但我删除了第一个发布的解决方案,因为它对于一般字符串确实是不正确的。该解决方案如果字符串包含重复,则会删除第一个x个字符的所有实例,因此可能会导致错误。 - ClimateUnboxed

1

显示账号的最后3位数字的示例。

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

o/p: '890'

这与tkbx的答案存在相同的问题。 - jamylak
x = '12345678901234567890' x.replace(x[:7], 'xxxxxxx') 'xxxxxxx890xxxxxxx890'
- jamylak
这甚至没有回答问题,你是用“x”替换字符而不是删除它们。 - jamylak

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接