如何得到字符串的最后一部分在某个字符之前?

我试图打印字符串的最后一部分在某个字符之前。

我不太确定是否要使用 string.split ()方法或者字符串切片或者其他方法。

下面是一些不起作用的代码,但我认为它们展示了其中的逻辑:

x = 'http://test.com/lalala-134'
print x['-':0] # beginning at the end of the string, return everything before '-'

注意,字符串末尾的数字在大小上会有所不同,所以我不能设置字符串末尾的精确计数。

148875 次浏览

你正在寻找 str.rsplit(),有一个限制:

print x.rsplit('-', 1)[0]

.rsplit()从输入字符串的末尾搜索拆分字符串,第二个参数将拆分次数限制为只拆分一次。

另一个选择是使用 str.rpartition(),它只会分割一次:

print x.rpartition('-')[0]

对于只拆分一次,str.rpartition()也是更快的方法; 如果需要拆分多次,则只能使用 str.rsplit()

演示:

>>> x = 'http://test.com/lalala-134'
>>> print x.rsplit('-', 1)[0]
http://test.com/lalala
>>> 'something-with-a-lot-of-dashes'.rsplit('-', 1)[0]
'something-with-a-lot-of'

str.rpartition()也是如此

>>> print x.rpartition('-')[0]
http://test.com/lalala
>>> 'something-with-a-lot-of-dashes'.rpartition('-')[0]
'something-with-a-lot-of'

分裂< strong > 分区 之间的区别是拆分返回列表 没有分隔符,并将拆分它在字符串即获得分隔符的任何地方。

x = 'http://test.com/lalala-134-431'


a,b,c = x.split(-)
print(a)
"http://test.com/lalala"
print(b)
"134"
print(c)
"431"

< strong > 分区 将只使用 第一分隔符除以字符串,并且在列表中只返回3个值

x = 'http://test.com/lalala-134-431'
a,b,c = x.partition('-')
print(a)
"http://test.com/lalala"
print(b)
"-"
print(c)
"134-431"

所以当你想要最后一个值的时候,你可以使用 < strong > rPartition ,它的工作原理是一样的,但是它会从字符串的末尾找到分隔符

x = 'http://test.com/lalala-134-431'
a,b,c = x.rpartition('-')
print(a)
"http://test.com/lalala-134"
print(b)
"-"
print(c)
"431"