如何使用变量而不是大括号内的数字来格式化字符串?

问题描述 投票:1回答:1

我正在使用Python 3.7,并且已经在变量中存储了一个值。这个变量保存了我想在花括号中用于字符串格式化的padding的值。该代码说明了我正在尝试做的事情。

def print_formatted(number):
    for i in range(1, number + 1):
        binum = bin(i).replace('0b', '')
        ocnum = oct(i).replace('0o', '')
        hexnum = hex(i).replace('0x', '')

        length = len(bin(number).replace('0b', ''))
        print('{0:>length} {1:>length} {2:>length} {3:>length}'.format(i, ocnum, hexnum, binum)) # Error here

这是我一直试图运行的代码。我想做的是通过用最后一个二进制数的长度值填充数字来使数字正确对齐。

ValueError:无效的格式说明符

这是我得到的错误。我在做什么错?

python python-3.x string-formatting
1个回答
0
投票

[您必须首先将变量length的值合并到格式字符串中,奇怪的是,使用.format()是执行此操作的最佳方法。

更改下一行

print('{0:>length} {1:>length} {2:>length} {3:>length}'.format(i, ocnum, hexnum, binum))

to

print('{{0:>{length}}} {{1:>{length}}} {{2:>{length}}} {{3:>{length}}}'.format(length=length).format(i, ocnum, hexnum, binum))
© www.soinside.com 2019 - 2024. All rights reserved.