web-dev-qa-db-ja.com

特定の文字の前の文字列の最後の部分を取得する方法は?

特定の文字の前の文字列の最後の部分を印刷しようとしています。

String .split()メソッドを使用するのか、文字列のスライスを使用するのか、それとも何か他のものを使用するのかはよくわかりません。

動作しないコードを次に示しますが、ロジックは示されていると思います。

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

末尾の数字はサイズが異なるため、文字列の末尾から正確なカウントを設定できないことに注意してください。

53
user1063287

あなたは str.rsplit() を探しています、制限付き:

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

.rsplit()は、入力文字列の末尾から分割文字列を検索し、2番目の引数は、分割する回数を1回だけに制限します。

別のオプションは 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'
97
Martijn Pieters

splitpartition is splitは、リストを返しますwithout delimiterで、文字列内の区切り文字を取得する場所で分割します。

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は、文字列をfirst区切り文字のみで除算し、リスト内の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.partition('-')
print(a)
"http://test.com/lalala-134"
print(b)
"-"
print(c)
"431"
1
dvijparekh