在Python中移除字符串的一部分(但不包括)
我想要去掉字符串的一部分。
比如说,去掉:-
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
方法和切片操作。