如何以一致的形式对齐输出

2024-10-03 06:27:15 发布

您现在位置:Python中文网/ 问答频道 /正文

如您所见,前4列正确对齐, 但当我在最后附加锁定列时,它的格式非常奇怪。你知道吗

这是我的密码

    show_camera_in_command = "\t".join(camera.split(",,,")[0:-1])
    if locked:
        p_yel(show_camera_in_command+"\t\tLOCKED")
    else:
        print(show_camera_in_command)

输出


Tags: in密码if格式showelsecommandcamera
3条回答

问题来自于这样一个事实:具有某种标识符的列有一个大小变量。您需要首先检查最长的字符串,然后根据其大小添加所需的相关选项卡。你知道吗

您可以计算要在标识符之间插入并用简单公式锁定的选项卡数(其中一个选项卡等于8个空格):

# Just make a simple relevant sample with different size
>>> lst = ["a", "aaaa", "aaaaaaaaaaaaaaa"]
>>> for a in lst:
...     print "%s\tLOCKED" % a
...
a       LOCKED
aaaa    LOCKED
aaaaaaaaaaaaaaa LOCKED  # Here we can see the problem

>>> max_size = len(lst[-1])
>>> for a in lst:
...     print "%s%sLOCKED" % (a, "\t" * ((max_size - len(a))/8 + 1))
...
a               LOCKED
aaaa            LOCKED
aaaaaaaaaaaaaaa LOCKED

为简单起见,您可以将print语句分为两条指令:

nb_tabs = (max_size - len(a))/8 + 1
print "%s%sLOCKED" % (a, "\t" * nb_tabs)

当然,您需要计算最大大小,这可以通过对size = max([len(x) for x in lst])这样的数据进行简单的迭代来完成。你知道吗

tab字符强制输出到下一个“tab stop”。将制表符视为8个空格。因为像SF8172这样的数据是6个字符,所以第一个'\t'将输出推到下一个“8空格”位置,第二个将输出推到另一个8空格。像NDB301ND8301这样的输出是12个空格,因此您已经传递了第一个选项卡设置上一个输出行的位置。因此,您可以移动一个额外的“制表位”。类似地,vvkèu站1甚至更长,并且经过tab“tab stop”,因此它在输出线上更远。你知道吗

输出与您指定的完全一致。其他列都在同一选项卡区域内,因此它们不显示变化。你知道吗

您可以使用格式或计算所需的制表符数。例如

i = (64 - len(field))//8

现在在输出规范中用'\t'*i输出。你知道吗

使用python的格式。您可以看到示例here。你知道吗

相关问题 更多 >