0

通常は次のようないくつかの値を出力するデバイスがあります。

-1.6410,0.5390,0.5570
-1.6160,0.3860,0.5620
-1.4890,-0.0760,0.5260
-1.4120,-0.1740,0.5290
-1.2920,-0.2160,0.6110
-1.2520,-0.2510,0.6450
-1.2530,-0.2270,0.6330
-1.2670,-0.2220,0.6530
-1.2350,-0.2250,0.7170
-1.4470,-0.3840,0.2400
-1.2670,-0.7480,0.0630
-1.0690,-0.9340,-0.1400
-0.9440,-1.0000,-0.2440

3 つの数値の長さは任意で、正または負の値を指定できます。テキスト文字列 (「CHECKSUM ERROR」など) ではなく、有効な数値が返されたことを (Python で) チェックする方法はありますか? どのようなテキスト エラーが受信されるかわからないので、番号が受信されたかどうかを確認してみたいと思います。これは可能ですか?

変数ごとに単純な IF ステートメントを考えましたが、それは扱いにくいようです。例えば:

if (value1 > -9999) and (value1 < 9999):
...

3 つの値のそれぞれに対してこれを行う必要があります。もっと簡単な方法はありますか?

4

2 に答える 2

2

各行を正規表現で渡すことができます

import re

valid_pattern = re.compile('-?\d\.\d+,-?\d\.\d+,-?\d\.\d+')

for line in lines:
    if valid_pattern.match(line):
        x,y,z = map(float(line.split(","))
    else:
        pass #ignore the line, maybe print a warning whatever
于 2014-07-18T21:20:15.747 に答える