【问题标题】:How to break large cell into multiple lines and adjust table?如何将大单元格分成多行并调整表格?
【发布时间】:2021-07-20 15:45:52
【问题描述】:

我正在使用pytablewriter 将数据从 postgres 写入第一个网格表。我的代码是:

from pytablewriter import RstGridTableWriter as RST
import psycopg2

if __name__ == '__main__':
    with connection.cursor(name='foo') as cursor:
        cursor.itersize = 100000
        cursor.execute(query)

        for raw_row in cursor:
            row = [
                raw_row[0],
                raw_row[1],
                raw_row[2],
                ', '.join([item for item in raw_row[3] if item])
            ]

            matrix.append(row)

    writer = RST(
        table_name='DocTable',
        headers=['col1', 'col2', 'col3', 'col4'],
        value_matrix=matrix
    )

    writer.dump('./sample.rst')

获取的每一行的最后一个值是一个字符串列表。对于每次迭代,上面的代码将字符串列表转换为逗号分隔的字符串。该字符串可能很大,导致列很大。

我想知道如何为每列输出一个固定宽度的表格,并将大列分成多行。示例:

单元格: "Lorem,ipsum,dolor,sit,amet,consectetur,adipiscing,elit,sed,do,eiusmod,tempor,incididunt,ut,labore,et,dolore,magna,aliqua.,Ut,enim,ad,minim,veniam,quis,nostrud,exercitation,ullamco,laboris,nisi,ut,aliquip,ex,ea,commodo,consequat"

变成:

'Lorem,'
'ipsum,'
'dolor,'
'sit,'
'amet,'
'consectetur,'
'adipiscing,'
'elit,'
'sed,'
'do,'
'eiusmod,'
'tempor,'
'incididunt,'
'ut,'
'labore,'
'et,'
'dolore,'
'magna,'
'aliqua.,'
'Ut,'
'enim,'
'ad,'
'minim,'
'veniam,'
'quis,'
'nostrud,'
'exercitation,'
'ullamco,'
'laboris,'
'nisi,'
'ut,'
'aliquip,'
'ex,'
'ea,'
'commodo,'
'consequat'

所有其他单元格也已正确调整。

我尝试将其写为',\n'.join([item for item in raw_row[3] if item]),但不起作用。

【问题讨论】:

  • 只有5 threads on SO about pytablewriter,因此您不太可能得到具体的答案。如果您真的需要解决方案,我的建议是编辑问题以包含matrixMRE,它允许仅使用pytablewriter 库和matrix 来解决此问题(这样您可以获得更多潜在答案)。我还添加了包含 Psycopg 标记的问题。

标签: python psycopg2 restructuredtext


【解决方案1】:

您可以使用 nth-child selectorrst-class 指令通过自定义 CSS 更改数据,而无需更改数据。

非常粗略,假设第四列是麻烦。

file.rst

.. rst-class:: my-table

[pytablewriter output]

custom.css

table.my-table tbody tr td:nth-child(4) {
    width: 30%;
}

【讨论】:

    猜你喜欢
    • 2014-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多