2012-04-07 20 views
1

これはうまくいけば単純ですが、文字列"電圧はE = 200Vで、電流はI = 4.5A"です。両方の浮動小数点値を抽出する必要があります。私は浮動小数点()関数(パラメータで11から16のサブ文字列)を使用しようとしましたが、エラーが発生します。私はこれがおそらく良いコーディングではないことを認識しています、私はPythonを学ぼうとしているのです。どんな助けでも大歓迎です。浮動小数点型の文字列を見つける - Python

編集:ここでは、この言語に新しいイム、再びコード

I = 0.0  
if((currentString.find('I=')) != -1): 
      I = float(currentString[(currentString.find('I=')):(currentString.find('A'))]) 

であり、私はそれが醜い知っています。

+0

あなたは私たちあなたのコードを示しすることはできますか? 's = '200'; float(s) 'が動作するはずです。 – George

+0

部分文字列は 'E = 200V'ですが、これは有効なfloatではありません。もっと具体的にする必要があります。コードを含める必要があります。トレースバックで取得したエラーを含める必要があります。 –

+0

これがうまくいくかどうかわかりません:http://ideone.com/ynjW3。あなたが遭遇した場合は、あなたのエラーについてより具体的に教えてください。 – George

答えて

2

正規表現について言及したくないですが、初心者にとってはしばしば混乱するツールですが、使用と参照に関しては、これらの値を取得するのに役立つスニペットがあります。 IIRC電圧は浮動小数点(intではなく)になる可能性は低いので、この一致演算はintを後で返しますが、実際に必要な場合は浮動小数点にすることができます。

>>> import re 
>>> regex = re.compile(r'.*?E=([\d.]+).*?I=([\d.]+)') 
>>> re.match('voltage is E=200V and the current is I=4.5A') 
>>> matches = regex.match('voltage is E=200V and the current is I=4.5A') 
>>> int(matches.group(1)) 
200 
>>> float(matches.group(2)) 
4.5 

よりシンプルなツールを使用して、このような数字を抽出する方法は次のとおりです。

>>> s.find('E=') 
11 
>>> s.find('V', 11) 
16 
>>> s[11:16] 
'E=200' 
>>> s[11+2:16] 
'200' 
>>> int(s[11+2:16]) 
200 
+0

ありがとうございます!私はこれについて考えることができませんでしたが怒っています。/ /しかし、たくさんの人に感謝します – MellowFellow

+0

[ - ]電圧の間に ' - 'を追加することができます。私は電気工学者ではありません。 ;) – Kurt

関連する問題