我有一串流式十六進制數字的文件,我需要將其轉換回整數。讀取數據並將其分割成線後,我有以下幾點:在循環中使用int時出現無效文字
In [153]: text_lines
Out[153]:
['AB01D801AC01870BB6FFE000',
'A9015F01AB01860B2600B300',
'A901FE00AC01860BD4FF4E01',
'AB01E700AB01850B4200DD00',
'AA017F01AA01850B23009E00',
'AC017D01AE01840B08004301',
'']
現在,如果我試圖通過這些線路進行迭代,重新排列字節,並轉換,我得到一個錯誤:
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 [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
我也可以打出來的第一個for循環,只是顯示應放入INT()函數的文字,它看起來像剛纔我期望。
In [174]: for line in text_lines:
.....: print line[2:4]+line[0:2]
.....:
01AB
01A9
01A9
01AB
01AA
01AC
任何想法,爲什麼迭代過線內text_lines
導致int()
功能打破?謝謝。
錯誤消息告訴你爲什麼......你的清單 –
根據從那裏輸入數據來的時候,你應該檢查是否是餵養它之前有效的十六進制數在年底擺脫空字符串進入'int'函數。一個空字符串絕對不是一個有效的十六進制字符串。您可以先清理數據,或者簡單地捕獲「ValueError」異常。 –
謝謝。一個愚蠢的錯誤。 – walkingcrane