整数に変換する必要があるストリーム16進数のファイルがあります。データの読み込みや線にそれを分割した後、私は次があります。ループ内でintを使用するときに無効なリテラル
In [138]: for line in text_lines:
.....: phA.append(int((line[2:4]+line[0:2]),16))
.....:
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-138-eb4d5ccf5005> in <module>()
1 for line in text_lines:
----> 2 phA.append(int((line[2:4]+line[0:2]),16))
3
ValueError: invalid literal for int() with base 16: ''
:私は、これらの行を反復処理のバイトを再配置し、変換しようとした場合、今
In [153]: text_lines
Out[153]:
['AB01D801AC01870BB6FFE000',
'A9015F01AB01860B2600B300',
'A901FE00AC01860BD4FF4E01',
'AB01E700AB01850B4200DD00',
'AA017F01AA01850B23009E00',
'AC017D01AE01840B08004301',
'']
、私はエラーを取得します
しかし、私は問題なくこれを行うことができます。
In [165]: for i in range(len(text_lines)-1):
.....: line = text_lines[i]
.....: print int((line[2:4]+line[0:2]),16)
.....:
427
425
425
427
426
428
私もちょうどint型()関数に入れて、それがまさに私のように見えるべきであるリテラルを表示するには、forループを最初に抜け出すことができます期待する。
In [174]: for line in text_lines:
.....: print line[2:4]+line[0:2]
.....:
01AB
01A9
01A9
01AB
01AA
01AC
text_lines
内の行の繰り返し処理を破るためにint()
機能の原因となる理由として任意のアイデア?ありがとう。
エラーメッセージがなぜ...あなたの入力データが入るところからに応じて、リスト –
の最後に空の文字列を取り除くを示しています、それはそれを供給する前に、有効な16進数だ場合、あなたがチェックする必要がありますint関数に変換します。空文字列は、確かに有効な16進文字列ではありません。最初にデータを消毒するか、単に「ValueError」例外を捕まえることができます。 –
ありがとうございます。愚かな間違い。 – walkingcrane