我正在执行一项任务,为 XML 电子表格中的给定公式构建引用图。例如,对于以下行:
<row>
<cell></cell>
<cell></cell>
<cell index="5"></cell>
<cell></cell>
<cell></cell>
<cell index="9"></cell>
<cell></cell>
......
</row>
如果我使用 enumerate(row.findall("cell"))
它将返回 a=[1, 2, 3, 4, 5, 6, 7]
。然而,属性index
给出了特定单元格的信息。也就是说,我应该得到 b=[1, 2, 5, 6, 7, 9, 10]
而不是 a
(注意第三个单元格是 5 ,所以它改变了枚举,类似的事情发生在索引为9之后)。
如何从a
前往b
?我想要一个更加 Pythonic 的程序。我现在拥有类似 C 的语法(我对此有点厌倦):
testcases = [[1, 2, 5, 4, 5, 9, 8], [5, 4, 5, 9, 8], [1, 2, 5, 4, 5, 9]]
for cells in testcases:
first = None
for i, c in enumerate(cells):
if c>i+1:
first = c
if i>0 and c < cells[i-1]:
cells[i]=cells[i-1]+1
elif i>0 and c> cells[i-1]+1 and first is None:
first=c
for j in range(i)[::-1]:
cells[j]=c-1
c=c-1
print(cells)
最佳答案
我无法完全理解您的问题,但这可能是您需要的起点:
matrix = [[1, 2, 5, 4, 5, 9, 8], [5, 4, 5, 9, 8], [1, 2, 5, 4, 5, 9]]
for rowid, cellid, cell in [(rowid, cellid, cell) for rowid, row in enumerate(matrix) for cellid, cell in enumerate(row)]:
print "matrix[%d, %d]: %s" % (rowid, cellid, cell)
这将遍历整个矩阵,打印所有单元格并让您访问所有行和单元格 ID。
关于python - 通过 python 浏览电子表格 xml,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12929536/