2012-02-17 5 views
2

文字列の一部を取り除こうとしています。Pythonで文字列の一部を削除します(ただしこれには含まれません)

ストリップ: - 残す

a = xyz-abc 

: -

a = -abc 

私は通常lstrip例えばを使用します「 - 」

a.lstrip('xyz') 

が、私はあることを行っているものxyzのかわからないので、私はちょうどの左側にあるすべてのものを除去する方法が必要になり、この場合

lstripでこのオプションを設定することは可能ですか、それとも別の方法で行う必要がありますか?

ありがとうございました。

+1

これがどのように動作するのかを理解するために、いくつかの単体テストを書いてください。 – hughdbrown

答えて

3
>>> a = 'xyz-abc' 
>>> a.find('-') # return the index of the first instance of '-' 
3 
>>> a[a.find('-'):] # return the string of everything past that index 
'-abc' 

.findとスプライシングの組み合わせを使用できます。

+0

いいね、ありがとう。 – user788462

6

一つだけ-の文字がある場合、これは動作します:

'xyz-abc'.split('-')[1] 

あなたがそこに'-'をしたい場合、あなたはそれを再接続する必要があります。

>>> '-' + 'xyz-abc'.split('-')[1] 
'-abc' 

ことができますパラメータをカウントもあります最初の-文字でのみ分割します。

>>> '-' + 'xyz-ab-c'.split('-', 1)[1] 
'-ab-c' 

partitionも潜在的に有用である:

>>> 'xyz-abc'.partition('-') 
('xyz', '-', 'abc') 

それは、セパレータの最初の発生時分割:-の左側にあるテキストという保証がない場合

>>> ''.join('xyz-ab-c'.partition('-')[1:]) 
'-ab-c' 
+0

これは '' - ''を取り除きますので、 '' - ' + ...'を実行する必要があります。また、 '.split( ' - '、1)'を実行すると、1回だけ分割されます。 –

+0

@senderie素早い返信をありがとう。 – user788462

2

独自のダッシュを含まない場合はの逆バージョンrfindと呼ばれ、さらに便利です。

>>> s = "xyv-er-hdgcfh-abc" 
>>> print s[s.rfind("-"):] 
-abc 
関連する問題