python - 通过 python 浏览电子表格 xml

标签 python lxml

我正在执行一项任务,为 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/

相关文章:

python - 解析xml文档结果解析错误

python - 使用 assertRaises 的 Django 测试未能意识到引发的异常是预期的异常

python - 如何将 lxml xpath 函数导入默认命名空间?

Python lxml - 使用 xml :lang attribute to retrieve an element

python - 我如何使目标移动? ( python , turtle )

python - 无法在 Windows 上安装 Python Scrapy (Lxml)

python - 任何 CPython 2.7 代码都可以在 Jython 2.7b3 中工作吗?

Python OS - 检查文件是否存在,如果存在则重命名,再次检查,然后保存

python - matplotlib:如何缓冲标签文本?

python - 是否可以在 Firefox 上列出已安装的证书?