2012-05-25 69 views
1

我有bitarray文件看起来像这样:保存蟒蛇输出到可变

10000000000000000000000000000000000000000000000000000000000000000000001000000 

我需要的比特的总和根据其在bitarray位置(第二位,第二位+ 7,第二位+14)。我尝试了下面的代码,但它只是第一个打印值的总和。你能指导我解决这个问题吗?

lines = [line.strip() for line in open('test.txt')] 
    bitp = range(1,len(lines[0]),7) 
    for i in lines: 
     for p in bitp: 
      bitsum = sum(int(a) for a in i[p]) 
+0

您将'bitp'的大小设置为第一行_only_,所有行的长度是否相同? – Hooked

+0

文件中是否有多个bitarray行?你能否以更全面的方式解释“第二位,第二位+7位,第二位+14”? –

+0

@Hooked是的,它有相同的大小 –

回答

1

我想你想存储每行的总和?在这种情况下,您需要一个列表:

bitsums = list() 
with open('test.txt') as fobj: 
    for line in fobj: 
     bitsums.append(sum(int(c) for c in line.strip()[1::7])) 
+0

谢谢!它的工作完美。所以,问题是剥离和列表功能。 –