首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将文本行的部分重新排列为列,以便打印为表(Python)

将文本行的部分重新排列为列,以便打印为表(Python)
EN

Stack Overflow用户
提问于 2022-09-10 14:50:37
回答 1查看 33关注 0票数 -2

我想要将文本的部分重新排列成文本,其中这些部分以列的形式出现。

到目前为止,我想出的代码如下:

代码语言:javascript
复制
sectSepar = '\n---\n'
mltiColmn = """\
Column A
first row
second row
3rd row
---
Column B
1. only
---
Column C
1. ...
2. long-long text"""

import itertools
print( *list(itertools.zip_longest(*[ 
   [ column.ljust(maxlen:=max(map(len, section.split('\n')))) 
       for column in section.split('\n') ]
           for section in mltiColmn.split(sectSepar) ],
           fillvalue=''.ljust(maxlen))),sep='\n')

代码工作正常,但它打印:

代码语言:javascript
复制
('Column A  ', 'Column B', 'Column C         ')
('first row ', '1. only ', '1. ...           ')
('second row', '                 ', '2. long-long text')
('3rd row   ', '                 ', '                 ')

而不是

代码语言:javascript
复制
('Column A  ', 'Column B', 'Column C         ')
('first row ', '1. only ', '1. ...           ')
('second row', '        ', '2. long-long text')
('3rd row   ', '        ', '                 ')

我假设代码存在的问题是,Python不像我希望的那样计算maxlen的值,但是不知道如何解决这个问题。同时,我也不喜欢代码的编写方式,因为由于嵌套和难以跟踪括号,所以我失去了概述。所以我的问题是:

是否有一种方法可以为这样的文本重排编写易于阅读和理解的代码(例如,使用链接而不是嵌套命令(如max(map(len ...))) ),并提供正确的输出?

EN

回答 1

Stack Overflow用户

发布于 2022-09-10 23:28:22

为了解决深层次嵌套列表的问题,我建议按照以下步骤将重新排列分成几个步骤:

代码语言:javascript
复制
colmnsAsTxtLines = """\
Column A
first row
second row
3rd row
---
Column B
1. only
---
Column C
1. ...
2. long-long text"""
sectSepar = '\n---\n'

import itertools
Rows = list(itertools.zip_longest(*[ section.split('\n') 
       for section in colmnsAsTxtLines.split(sectSepar)],fillvalue=' '))
print( *[ list(e) for e in zip(*[list(map(str.ljust, sectnLines, 
        [max(map(len,sectnLines))]*len(sectnLines))) 
        for sectnLines in zip(*Rows) ] ) ], sep='\n')

上面的代码提供了正确的请求输出:

代码语言:javascript
复制
['Column A  ', 'Column B', 'Column C         ']
['first row ', '1. only ', '1. ...           ']
['second row', '        ', '2. long-long text']
['3rd row   ', '        ', '                 ']
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73672765

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档