代码段:
import xlrd
wb = xlrd.open_workbook("links.xls")
sh = wb.sheet_by_index(0)
count = 0
for row in range(1, sh.nrows):
val = sh.row_values(row)
if (val[4]) != 2:
print 'id',str(int(val[0])), 'value', str(int(val[1])) + "-" + str(int(val[2]))
else:
print 'id',str(int(val[0])), 'value', str(int(val[1])) + "-" + str(int(val[2]))
print 'id',str(int(val[0])), 'value', str(int(val[2])) + "-" + str(int(val[1]))
links.xls
id From To Len Permlanes
1 1 7 350 9
2 1 8 460 3
3 1 3 490 2
4 2 9 220 2
5 2 7 540 1
6 2 8 590 1
7 3 6 250 1
8 4 4 290 6
9 4 9 570 1
10 4 2 430 1
输出:
id 1 value 1-7
id 2 value 1-8
id 3 value 1-3
id 3 value 3-1
id 4 value 2-9
id 4 value 9-2
id 5 value 2-7
id 6 value 2-8
id 7 value 3-6
id 8 value 4-4
id 9 value 4-9
id 10 value 4-2
预期输出:
id 1 value 1-7
id 2 value 1-8
id 3 value 1-3
id 4 value 3-1
id 5 value 2-9
id 6 value 9-2
id 7 value 2-7
id 8 value 2-8
id 9 value 3-6
id 10 value 4-4
id 11 value 4-9
id 12 value 4-2
上面的代码是我正在处理的项目的一个小描述。当excel文件中的permlanes fields is 2
时,value
以备用模式写入两次,即1-3 and 3-1
,但id
输出不符合预期。有人可以帮助我调整代码,以便id output
是串行的(就像在预期的输出中一样),而不是在当前输出中出现。我尝试循环使用excel文件元素列表的索引显然不起作用,因为无法访问excel文件的元素。
感谢您的时间。
答案 0 :(得分:1)
我看到你有未使用的count
变量,所以我用它来跟踪输出索引,每当我们打印一个新的id时就增加它。
import xlrd
wb = xlrd.open_workbook("links.xls")
sh = wb.sheet_by_index(0)
count = 1
for row in range(1, sh.nrows):
val = sh.row_values(row)
if (val[4]) != 2:
print 'id',str(int(count)), 'value', str(int(val[1])) + "-" + str(int(val[2]))
else:
print 'id',str(int(count)), 'value', str(int(val[1])) + "-" + str(int(val[2]))
count+=1
print 'id',str(int(count)), 'value', str(int(val[2])) + "-" + str(int(val[1]))
count+=1