gpt4 book ai didi

python - 打印多行字符串,水平堆叠和对齐

转载 作者:行者123 更新时间:2023-12-04 01:04:53 31 4
gpt4 key购买 nike

我有这个列表:

boxes = [
'''
_ _ _ _ _
| |
| |
| 1st |
| box |
| |
|_ _ _ _ _|
''',
'''
_ _ _ _ _
| |
| |
| 2nd |
| box |
| |
|_ _ _ _ _|
''',
'''
_ _ _ _ _
| |
| |
| 3rd |
| box |
| |
|_ _ _ _ _|
''',

etc...]

这就是我想要显示列表元素的方式:

 _ _ _ _ _   _ _ _ _ _   _ _ _ _ _
| | | | | |
| | | | | |
| 1st | | 2nd | | 3rd |
| box | | box | | box |
| | | | | |
|_ _ _ _ _| |_ _ _ _ _| |_ _ _ _ _|

有没有一种方法可以在不对内联格式进行硬编码的情况下做到这一点? (每个框的内容变化)

我能想到的唯一方法是:

for x in boxes:
print(x, end=' ')

所以我尝试过这样做,但它不起作用,有什么想法吗?谢谢!

最佳答案

您可以将每个框拆分为多行,并组合一条组合行以打印,每个框的相应行以固定宽度彼此相邻设置格式。

lines = [box.splitlines() for box in boxes]
for idx in range(len(lines[0])):
print('%-20.20s %-20.20s %-20.20s' % (lines[0][idx], lines[1][idx], lines[2][idx]))

这显然可以通过多种方式进行概括,但至少应该让您入门。它只是假设所有数组成员都包含相同数量的行,并对格式宽度和数组成员的数量进行硬编码。

演示:https://ideone.com/VOfEt9

一些硬编码可以取消,但对于初学者问题来说,这可能在符号上有点密集:

    print(' '.join(['{:20}'] * len(lines)).format(*list(elt[idx] for elt in lines)))

关于python - 打印多行字符串,水平堆叠和对齐,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66890991/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com