我正在尝试在某个字符之前打印字符串的最后一部分。
我不太确定是否使用字符串 .split() 方法或字符串切片或其他方法。
这是一些不起作用的代码,但我认为显示了逻辑:
x = 'http://test.com/lalala-134'
print x['-':0] # beginning at the end of the string, return everything before '-'
请注意,末尾的数字大小会有所不同,因此我无法从字符串末尾设置确切的计数。
我正在尝试在某个字符之前打印字符串的最后一部分。
我不太确定是否使用字符串 .split() 方法或字符串切片或其他方法。
这是一些不起作用的代码,但我认为显示了逻辑:
x = 'http://test.com/lalala-134'
print x['-':0] # beginning at the end of the string, return everything before '-'
请注意,末尾的数字大小会有所不同,因此我无法从字符串末尾设置确切的计数。
您正在寻找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'
split和partition之间的区别是 split 返回没有分隔符的列表,并将在字符串中得到分隔符的地方进行拆分,即
x = 'http://test.com/lalala-134-431'
a,b,c = x.split(-)
print(a)
"http://test.com/lalala"
print(b)
"134"
print(c)
"431"
并且partition将仅使用第一个分隔符划分字符串,并且仅在列表中返回 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"
因此,当您想要最后一个值时,您可以使用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"