Python:将列表元素从readline()转换为整数?

时间:2014-10-28 01:49:47

标签: python list file file-io integer

所以我试图从包含十六进制数的文本文件中读取一行,然后将其转换为十进制数,然后除以3。

但是我收到一条错误消息:“ValueError:int((16)的无效文字:”

这是我做的:

f = open('simp.txt','r')
line = f.readline()

while line:
    line = f.readline()
    temp = (int(str(line[3:11]),16))//3
    print(temp)

有人能告诉我我的代码有什么问题吗?谢谢!

编辑:这是我的simp.txt中的内容:

   00000000
   000032C8

所以节目应该打印:“4333”,因为13000 // 3 = 4333。

3 个答案:

答案 0 :(得分:0)

也许是线击中了不能转换为十六进制的值;例如,int('1X',16)将给出ValueError。如果这不是问题,请打印行并分享价值或提供simp.txt

答案 1 :(得分:0)

这是因为当您使用readline时,它不会从字符串中删除\n\r字符,因此您最终会尝试将其转换为整数

使用f.readline().strip()

更好的方法是:

with open('simp.txt', 'r') as f:
    for line in f:
        temp = int(line.strip(), 16) // 3
        print(temp)

答案 2 :(得分:0)

您应该使用line.strip()删除行尾的\n\r

您可以尝试这样:

with open("simp.txt", "r") as fp:
    data = fp.readline()
    value = int(data.strip(), 16) / 3
    print value