使用python:将格式化的元素列表制作成列



这一行显示元素,我希望它们并排列。

def collect_split(list, message = None, message2 = None, message3 = None, message4 = None, message5 = None):
ll = [message, message2, message3, message4, message5]
print("{0} {1} {2} {3} {4}".format(ll[0] if ll[0] != None else "",ll[1] if ll[1] != None else "",ll[2] if ll[2] != None else "",ll[3] if ll[3] != None else "" , ll[4] if ll[4] != None else "", sep = " "))

列表(ll(中有什么:['32\n+698\n-----\n 730\n','1\n-3801\n------\n-3800\n','45\n+43\n-----\\n 88\n','123\n+49\n-----\\n172\n','143\n+55\n-----\\n 198\n']

结果:

32
+ 698
-----
730
1
- 3801
------
-3800
45
+ 43
----
88
123
+  49
-----
172
143
+  55
-----
198

这里有一个有效的方法:

ll = [' 32n+ 698n-----n 730n', 
' 1n- 3801n------n -3800n', 
' 45n+ 43n----n 88n', 
' 123n+ 49n-----n 172n', 
' 143n+ 55n-----n 198n']
mes_len = 6
space_len = 10
f_str = '{0:>%d}'%mes_len
space = ' '*space_len
output = []
for line in zip(*[l.split('n') for l in ll]):
output.append(space.join([f_str.format(s) for s in line]))
print('n'.join(output))

或者,如果你对使用一行无法阅读的代码的解决方案特别感兴趣(正如你的问题所表明的那样(,那么就有等效的

ll = [' 32n+ 698n-----n 730n', ' 1n- 3801n------n -3800n', ' 45n+ 43n----n 88n',' 123n+ 49n-----n 172n',' 143n+ 55n-----n 198n'] 
print('n'.join([''.join(['{0:>8}'.format(s) for s in line]) for line in zip(*[l.split('n') for l in ll])]))

结果输出:

32               1              45             123             143
+ 698          - 3801            + 43            + 49            + 55
-----          ------            ----           -----           -----
730           -3800              88             172             198

为了获得更均匀的外观,请使底部的------行具有相同的长度。

相关内容

  • 没有找到相关文章

最新更新