繁体   English   中英

通过循环解压缩二维列表

[英]Unpack a two-dimensional list through the loop

我需要解压缩具有动态长度的二维列表(列表列表)。 整个任务是借助lxml框架从我的列表中形成功能齐全的HTML表。

使用这个出色的答案作为骨干之后,我来到了下面的代码来完成我的任务:

 page = (
    E.html(
        E.body(
        E.table(
                E.tr(
                    E.th(E.div("header1")),
                      ...
                    E.th(E.div("header40")),
                    ),
                *[E.tr(
                     *[
                        E.td(str(col)) for col in p_list[1] <<- how to put N here???
                     ]
                    ) for row in range(len(p_list))]
                , border="2"
                )
            )
        )
    )

第一个E.tr是我的表的标题,第二个*[E.tr从列表p_list解压缩。 该列表具有N个元素(又名行),每个元素本身都是一个列表,由约50个元素(又称N行的列)组成。

p_list的声明和填充如下:

p_list = list()
rows = table.iter('div')
p_list.append([c.text for c in rows])
rows = table.xpath("body/table")[0].findall("tr")
for row in rows[2:]:
   p_list.append([c.text for c in row.getchildren()])

现在,此代码只能输出p_list 的同一行N次,并且只能与硬编码的行号一起使用,但是如果我想动态指定它以输出整个表怎么办?

无法弄清楚该如何做。

p_list[1]替换为p_list[row] 更好的是,不要使用range

*[E.tr(
   *[ E.td(str(col)) for col in row ]
) for row in p_list ]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM