0

以下のコードでは、「reading」変数を出力すると、「25.00:50.00:72.00」が出力されます。

reading = ser.readline().decode()

print("VALUE: "+reading.split(':')[0]) # this works printing "25.00"

問題は、2 番目 ([1]) または 3 番目 ([2]) の要素を印刷しようとすると、次のエラーが発生することです。

print("VALUE: "+reading.split(':')[1])
IndexError: list index out of range

編集1:

「reading」変数を調べたところ、空白行も存在することがわかりました。このコードでこれを修正しました:

reading = ser.readline().strip().decode()

それでも同じエラーが発生します。文字列をクリーンアップするために他に何ができますか? 注: 問題がある場合、文字列はシリアル経由で送信されます。

編集2:

多くのコメントが示唆したように、問題は実際には読み取り変数にありました。シリアルポートから返された変数を読み取るための最初の数回の値が実際には空であり、印刷時にコンソールに直接表示されなかったため、エラーが発生していました。日付を解析する前に長さが正しいことを確認すると、問題が解決しました。

4

1 に答える 1

4

あなたのコードは正しいです。

>>> reading = "25.00:50.00:72.00"
>>> print("VALUE: "+reading.split(':')[0])
VALUE: 25.00
>>> print("VALUE: "+reading.split(':')[1])
VALUE: 50.00

変数には、reading含まれていると思われるものが含まれていません。

于 2013-07-09T22:00:56.960 に答える