在Python中移除字符串的一部分(但不包括)

2 投票
3 回答
519 浏览
提问于 2025-04-17 13:09

我想要去掉字符串的一部分。

比如说,去掉:-

a = xyz-abc

留下:-

a = -abc

我通常会用 lstrip,比如说:

a.lstrip('xyz')

但是在这种情况下,我不知道 xyz 会是什么,所以我需要一种方法,只去掉 '-' 左边的所有东西。

请问用 lstrip 可以设置这个选项吗,还是我得用其他方法?

谢谢。

3 个回答

2

如果不能保证在-左边的文本里没有自己的短横线,那么有一个叫rfind的函数就更加好用了,它是find的反向版本:

>>> s = "xyv-er-hdgcfh-abc"
>>> print s[s.rfind("-"):]
-abc
6

如果只有一个 - 字符,这样做是可以的:

'xyz-abc'.split('-')[1]

如果你想把 '-' 包含在里面,就需要把它重新连接上:

>>> '-' + 'xyz-abc'.split('-')[1]
'-abc'

还有一个叫做 count 的参数,可以让你只在第一个 - 字符处进行分割。

>>> '-' + 'xyz-ab-c'.split('-', 1)[1]
'-ab-c'

partition 也是一个可能有用的工具:

>>> 'xyz-abc'.partition('-')
('xyz', '-', 'abc')

它会在分隔符第一次出现的地方进行分割:

>>> ''.join('xyz-ab-c'.partition('-')[1:])
'-ab-c'
3
>>> a = 'xyz-abc'
>>> a.find('-')  # return the index of the first instance of '-'
3
>>> a[a.find('-'):]   # return the string of everything past that index
'-abc'

你可以结合使用 .find 方法和切片操作。

撰写回答