没有任何方法可以准确地做到这一点。您可以做的是预先格式化您的数字列表,然后将该格式化的字符串作为单个项目传递给第二轮格式化:
>>> nums = (13, 42)
>>> '{0} is {1}'.format('my stuff', ''.join('{:02X}'.format(a) for a in nums))
'my stuff is 0D2A'
如果您愿意,您可以编写一个自定义 Formatter 子类,它接受一系列数字作为要格式化的单个项目,并将它们一起格式化。那可以让做类似的事情myFormatter.format('{0} is {1:list}', 'my stuff', (13, 42))
。以下是它的工作原理:
class ListFormatter(string.Formatter):
def format_field(self, value, spec):
if spec == 'list':
return ''.join('{:02X}'.format(a) for a in value)
else:
return super(ListFormatter, self).format_field(value, spec)
>>> lf = ListFormatter()
>>> lf.format('{0} is {1:list}', 'my stuff', [1, 43])
'my stuff is 012B'