2013-04-06 29 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を使用しました。私は 'print x.rpartition( ' - ')[2]'にも出くわしました。再度、感謝します! – user1063287

+2

あなたの言葉は少し曖昧でした。あなたは文字列の最後の部分**の前に**特定の文字*を求めました。あなたは後になって、私は推測する。 :-) –

+0

しかし私の素晴らしいコメント! '文字列の終わりに始まり'、あなたが何を意味するかが分かります。 – user1063287

0

差パーティション分割間及びと同じそれは、文字列に区切り文字を取得し、これまであなたが最後の値をしたいようにあなたがrpartitionを使用することができ、すなわち

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

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

パーティションのみ最初区切り文字で文字列を分割するだけで、リスト内の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"

を返します場所[1] - (1「」) `、それが働いた、ありがとうそれは同じように動作しますが、それは

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

関連する問題