2011-03-30 51 views
0

良い方法:ストライピング文字列私はタイプの文字列から数値を抽出したい文字列 ストライピングの

Var = '0x456;//used for fooing' 

##I do it this way but I am sure there is much better way of doing this : 
v = Var.split(';') 
c= v[0] 

##use c for further processing .... 

与えヴァールから部分0x456を抽出する良い方法は何ですか?

+1

'c = Var.split( ';')[0]'? –

+0

「より良い」を定義します。 – NPE

+0

あなたのソリューションは読書に最適です。 – Jason

答えて

2

あなたが推測したように、より効率的な方法があります。最初のトークンだけが必要なので、 ';'のインデックスを見つけることができます。その前に部分文字列を取ります。

Var[:Var.index(';')] 

ps変数名の最初の文字を大文字にするのはPythonの命名規則ではありません。これは従来からクラスに使用されています。

+0

これは上記の私のコメントと比較してあまり無害です。その不要なスライスと '.split'関数呼び出しでは達成できないことは何もありません –

+0

これは必ずしも正しいとは限りません。 Pythonの文字列は不変なので、スライスと '.split'はどちらも新しい文字列を構築する必要があります。違いは、私のスライスと他の答えにあるスライスはどちらも新しい文字列を作成することだけです。あなたのソリューションは少なくとも2つの新しい文字列(C++スタイルのコメントに ';'が含まれているかどうかに依存します)とそれらを含むリストを構築します。 一方、 '.index'や' .find'を使うには、入力変数を2回トラバースする必要があります.1回はインデックスを探し、もう1回はスライスする必要があります。しかし解析される数が限られているので、これはごくわずかです。 –

+0

個人的には.splitメソッドを使用することをお勧めしますか?彼らは再びスライスしないで両面を取ることができるので。 –

関連する問題