2011-10-21 16 views
3

可能性の重複:
python str.strip strange behavior奇妙な行動

私は、コードの一部を次のようしている:私は実行すると

st = '55000.0' 
st = st.strip('.0') 
print st 

、それだけで55を印刷するが、私はそれが55000を印刷することを期待します。私はdotstripにあると考えていましたが、これは通常escapeです。Regular Expressionでも私はst = st.strip('\.0')を試しましたが、まだ同じ結果が出ています。 .0をストライピングするだけでなく、なぜすべてのゼロがストライプ化されるのかについてのアイデアは何ですか?

+1

だけ@KennyTMに 'int型(ラウンド(フロート(ST)))' –

+0

1を使用することができます使用して、5500の望ましい結果を得るために - 迅速な記述は 'ストリップ()'いずれかを削除するということですが文字列の始めと終わりから引数に指定された文字を返し、それらの文字がない新しい文字列を返します。 – birryree

答えて

6

を剥奪されているあなたは)(ストリップを誤解している - それはどの両端から指定された文字の削除します。ここには正規表現のサポートはありません。

.0の両方を削除するように求めているので、55のままになります。

詳細については、official String class docsを参照してください。

+0

ああ、私は今それを得た、ありがとう –

4

は、str.strip上の重要な部分のビーイングのマニュアルを参照してください:

文字引数が接頭辞または接尾辞ではありません。むしろ、その値のすべての組み合わせが取り除かれています。個々の文字の

>>> ' spacious '.strip() 
'spacious' 
>>> 'www.example.com'.strip('cmowz.') 
'example' 
+0

'rstrip'でも同じルールが適用されますか? –

+0

はい、rstripと同じです。 –

1

strip作品を。あなたはすべてのものを取り除くように言った。と '0'文字で、それはそれがしたものです。

5

すべてのピリオドと0を取り除くように指示しているので、最初の非ピリオドの非0文字になります。

ストリップは、特定の構成ではなく、文字のリストを使用します。

代わりにこのような何か試してみてください:that's what strip doesので

st.partition('.')[0] 
+1

これは正常に動作します。私はrpartition()を使用しますが、私はそれを右辺から取り除くと考えています。 –

+0

確かに、文字列に表示される内容に依存します。それが正常な10進数であれば、どちらでも動作します。 –

+1

+1:特定の状況に最適な回避策。 –

2

を:引数charsは、接頭辞または接尾辞ではありません

。むしろ、その値のすべての組み合わせが

2

stripの引数は、削除する文字列は、を削除する文字のを設定されていないため。言い換えると。それは、その文字列の末尾から、その文字列のセット内にない文字が出現するまで、その文字列のどこかにある各文字を削除します。