[Python]fomat格式化字符串

  • 填充和对齐格式[索引]:[填充字符][对齐方式 <^>][宽度],如果只有一个数字的可以不写索引,
>>> '{0:*>10}'.format(10)  ##右对齐
'********10'
>>> '{0:*<10}'.format(10)  ##左对齐
'10********'
>>> '{0:*^10}'.format(10)  ##居中对齐
'****10****'
>>> '{1:.2f} {0:.2f}'.format(1/3,1/7)
0.14 0.33
  • 精度与进制
>>> '{0:.2f}'.format(1/3)  #保留小数点后两位
'0.33'
>>> '{0:9.2f}'.format(1/3)  #保留小数点后两位,但是使用空白填充符填充到总长度是9位
     0.33
>>> '{0:0^9.2f}'.format(1/3) #遵循填充和对齐格式
000.33000
>>> '{0:b}'.format(10)    #二进制
'1010'
>>> '{0:o}'.format(10)     #八进制
'12'
>>> '{0:x}'.format(10)     #16进制
'a'
>>> '{:,}'.format(12369132698)  #千分位格式化
'12,369,132,698'
  • 一个小例子
log_str = '| epoch {:3d} step {:>8d} | {:>6d} batches | lr {:.3g} ' \
            '| ms/batch {:5.2f} | loss {:5.2f}'.format(
    epoch, train_step, batch+1, optimizer.param_groups[0]['lr'],
    elapsed * 1000 / args.log_interval, cur_loss)
if args.dataset in ['enwik8', 'text8']:
    log_str += ' | bpc {:9.5f}'.format(cur_loss / math.log(2))
else:
    log_str += ' | ppl {:9.3f}'.format(math.exp(cur_loss))

你可能感兴趣的:([Python]fomat格式化字符串)