我试图从包含这种格式的二进制数列表的文件中读取: 0b1111; 0b1010; 0b0101 // 0b1110; 0b0010等。然后,我想追加由" //"分隔的每个部分。到列表。这些部分中的每一部分都应该变成一个列表,其中包含由";"分隔的部分中的所有数字。我终于得到了代码,但在修改完全不同且无关的代码并反转更改之后,现在它已经中断了。这是我目前使用的代码,因为在尝试解决问题之后我没有原始代码:
programLoad = open("programs.txt", "r")
programLoadList = programLoad.read()
programList = [p for p in programLoadList.split("//")]
programLoad.close()
for index in range(len(programList)):
programList[index] = [int(n, 2) for n in programList[index].split(";")]
我不会把文件放在这里,因为它真的很大。但是,所有数字都遵循正确的格式,并且在运行时它会在列表理解上失败并出现错误" int base 2&#34的无效文字。
如果您需要更多信息来帮助我,我很乐意提供。
答案 0 :(得分:1)
您可以在单个列表理解中执行此操作:
In [11]: [[int(b, 2) for b in line.split(";")] for line in program_list.split("//")]
Out[11]: [[15, 10, 5], [14, 2]]
答案 1 :(得分:0)
我认为这会奏效。只需将每个二进制表示形式视为字符串,并省略前两个字符并将剩余文本转换为整数。
programLoad = open("programs.txt", "r")
programLoadList = programLoad.read()
programList = [p for p in programLoadList.split("//")]
programLoad.close()
for index in range(len(programList)):
print programList[index]
programList[index] = [int(n[2:], 2) for n in programList[index].split(";")]
print programList