从列表列表创建多行文本字符串

时间:2015-08-25 19:12:57

标签: python

我有一个预先存在的函数来解析html表的数据。

def parse_table(lines):
       .......

我希望能够重用这个功能,但为了做到这一点,我必须提供'lines'变量,它是多行文本字符串的格式,如下所示:

a
b
c
d
e
f
.....

其中所有字母都是文本字符串。

到目前为止,我已经能够将表解析为列表列表(每个列表代表一行),如下所示:

  [[u'a',u'b',u'c'],[u'd',u'e',u'f'],...]

如何将列表列表转换为所需格式?

1 个答案:

答案 0 :(得分:3)

快速单行将产生你的字符串。

table = [[u'a1',u'b2',u'c3'],[u'd4',u'e5',u'f6'],...]
lines = "\n".join(sum(table, [])) + "\n" # if you want a trailing newline

如果您不喜欢使用sum通过“添加”来展平列表列表,则可以使用列表推导。 (这也比使用sum要快得多。)

lines = "\n".join([item for row in table for item in row])

最快的技术似乎是

lines = "\n".join(list(itertools.chain.from_iterable(table))

几乎是列表推导的两倍,但在Python 2.6中不可用(尽管itertools.chain(*table))可以在其位置上运行)。