我有一串流式十六进制数字的文件,我需要将其转换回整数。读取数据并将其分割成线后,我有以下几点:在循环中使用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