1

これはうまくいけばシンプルです。「電圧はE = 200Vで、電流はI = 4.5Aです」という文字列があります。両方の float 値を抽出する必要があります。float() 関数 (パラメーターに 11 から 16 の部分文字列を指定) を使用しようとしましたが、エラーが発生します。これはおそらく適切なコーディングではないことを認識しています。私は Python を学ぼうとしている初期段階にいます。どんな助けでも大歓迎です。

編集:これがコードです

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

繰り返しますが、私はこの言語に不慣れで、見苦しく見えることを知っています。

4

1 に答える 1

2

正規表現は初心者にとって混乱を招くツールであることが多いため、言及するのは気が進まないのですが、使用と参照のために、これらの値を取得するのに役立つスニペットを次に示します。IIRC 電圧は float (代わりに int?) である可能性は低いため、この一致する操作は後で int を返しますが、本当に必要な場合は float にすることができます。

>>> 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
于 2012-04-07T22:50:25.483 に答える