2013-04-06 105 views
43

我想在某個字符之前打印字符串的最後部分。如何在某個字符之前獲取字符串的最後部分?

我不太確定是否使用字符串.split()方法或字符串切片或其他東西。

下面是一些代碼,不工作,但我認爲顯示了邏輯:

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

需要注意的是,在最後的數字會在大小不等,所以我不能從最終設定精確計數的字符串。

回答

81

您正在尋找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' 
+0

非常感謝你,我用'打印x.rsplit(「 - 」,1)[1]'和它的工作,謝謝。我也剛剛遇到'print x.rpartition(' - ')[2]',這似乎也起作用!再次感謝! – user1063287 2013-04-06 13:52:41

+2

沒錯,你的措辭有點模棱兩可;你在**某個字符之前*要求*字符串的最後部分*;我想,你的意思是。 :-) – 2013-04-06 13:53:51

+0

但我的精彩評論! '從字符串的末尾開始',我明白你的意思是哈哈。 – user1063287 2013-04-06 14:08:00

0

差異與之間分裂分區被分割返回列表沒有分隔符,它將拆分相同在以往任何時候它變得分隔字符串即

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

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

分區將分字符串只第一分隔符,並在列表中,只要你想最後一個值,你可以使用rpartition只會返回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"

所以它工作在相同的方式,但它會從字符串的結尾找到分隔符

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

相關問題