Python 强制str.format()在显示十六进制时使用两位数字

Python 强制str.format()在显示十六进制时使用两位数字,python,format,Python,Format,我有以下代码行: print "{: ^#6x}".format(val), 其(部分)产生以下输出: 0x1 0x0 0x0 0x0 0x3 0xb2 0x0 0x0 0x3 0x0 0x3 0x0 0x2b 0x0 0x0 0x0 0xb 0x0 0xb 0x0 0x20 0x0 0x0 0x0 这一切都很好,很漂亮,但为了让事情看起来更好,我想强制十六进制数都是两位数,即0x00。但是,当我尝试向格式说明符添加精度时,即{:^#6.2x},它给出了错误: ValueError:整数格式

我有以下代码行:

print "{: ^#6x}".format(val),
其(部分)产生以下输出:

0x1 0x0 0x0 0x0
0x3 0xb2 0x0 0x0
0x3 0x0 0x3 0x0
0x2b 0x0 0x0 0x0
0xb 0x0 0xb 0x0
0x20 0x0 0x0 0x0
这一切都很好,很漂亮,但为了让事情看起来更好,我想强制十六进制数都是两位数,即
0x00
。但是,当我尝试向格式说明符添加精度时,即
{:^#6.2x}
,它给出了错误:

ValueError:整数格式说明符中不允许精度

如何强制十六进制始终显示两位数字?

您可以使用
#04x
将输出填充为带有
0x
前缀的两位数字,然后再次格式化以适合您的6个字符宽度:

print format(format(val, '#04x'), '^6'),
我使用了,因为你没有插入到一个更大的字符串

由于现在字段的宽度将为4个字符,因此您也可以使用字符串格式对两个空格填充进行硬编码:

print ' {:#04x} '.format(val),
演示:

>>> format(3, '#04x')
'0x03'
>>> format(format(3, '#04x'), '^6')
' 0x03 '
>>> ' {:#04x} '.format(3)
' 0x03 '