Вы уже знаете, как добавить ширину к поплавкам:
Я понимаю, что могу сделать {: 5.3f} в формате печати
Вы можете сделать то же самое с целыми числами или любым другим типом.
print('Epoch: [{0:1}][{1:3}/{2:4}]\t'
'Time: {batch_time.val:5.3f} ({batch_time.avg:5.3f})\t'
# and so on
То, что {1:3}
означает, что 90
будет отображаться с пробелом перед ним, например:
Epoch: [4][ 90/1770] | Time: 0.315 (0.321) | Loss: 1.5111 (1.6552) | Prec@1: 72.266% (67.943%) | Prec@5: 84.375% (83.001%)
Так что это будет соответствовать следующей строке:
Epoch: [4][100/1770] | Time: 0.314 (0.320) | Loss: 1.6079 (1.6558) | Prec@1: 70.312% (67.965%) | Prec@5: 84.766% (82.990%)
Если вы не читали документацию для Мини-языка спецификаций формата и просто гадаете, как вы можете изменить образцы, найденные в произвольном онлайн-коде, в надежде, что они сделают то, что вы хотите , прочитайте документы. Все довольно просто.
Вы также говорите:
проблема с моим оператором печати заключается в том, что некоторые являются фиксированными словами, такими как "Эпоха"
Фиксированные строки не кажутся проблемой в первую очередь.
Если они есть, вы можете сделать их одинаковой ширины, просто добавив пробелы вручную.
Если вы действительно хотите, вы можете сохранить эти фиксированные строки в переменных и вместо них добавить поля формата для них, так что у вас есть куда добавить поле ширины:
print('{epoch_label:6}: [{0:1}][{1:3}/{2:4}]\t'
'{time_label:6}: {batch_time.val:5.3f} ({batch_time.avg:5.3f})\t'
# etc.
loss=losses, top1=top1, top5=top5,
epoch_label='Epoch', time_label='Time'))
… но это выглядит глупо.