在Python中添加带字符串格式的空白

2024-04-24 00:44:39 发布

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

我试图理解下面代码的行为。 当我增加第一个大括号中的数字时,我会在第一列的左侧得到额外的空白。当我对第二个数字执行此操作时,我也会得到额外的空格,但在第二列的左侧。然而,当我为第三个做这件事时,一切都没有改变。为什么?

w = ['storm', 'ubuntu', 'singular', 'pineapple']
for i, word in enumerate(w):
    word_index = 3
    print('{:2} {:1} {:6}'.format(i, word_index, word))

Tags: 代码inforindexubuntu数字大括号空白
2条回答

有些东西确实会改变,但你看不到。让我们使用稍微修改过的代码版本,它标记输出的边距:

w = ['storm', 'ubuntu', 'singular', 'pineapple']
for i, word in enumerate(w):
    word_index = 3
    print('>>{:2} {:1} {:6}<<'.format(i, word_index, word))

运行此操作时,您将获得:

>> 0 3 storm <<
>> 1 3 ubuntu<<
>> 2 3 singular<<
>> 3 3 pineapple<<

现在,让我们将第三个宽度更改为16:

w = ['storm', 'ubuntu', 'singular', 'pineapple']
for i, word in enumerate(w):
    word_index = 3
    # Changed width of 3rd field from 6 to 16
    print('>>{:2} {:1} {:16}<<'.format(i, word_index, word))

运行此选项将在最后一个字段后提供更多空白:

>> 0 3 storm           <<
>> 1 3 ubuntu          <<
>> 2 3 singular        <<
>> 3 3 pineapple       <<

默认情况下,数字填充在左侧,而字符串填充在右侧(docs):

>>> "{:3}".format(1)
'  1'
>>> "{:3}".format("1")
'1  '

如果希望字符串也向右对齐,请指定它:

>>> "{:>3}".format("1")
'  1'

请注意,“storm”(长度5)在填充到宽度6时确实会获得额外的尾随空间,但由于它打印在右侧,您可能不会注意到

相关问题 更多 >