2014-01-29 82 views
0

我试图在一些python代码中使用以下语句。格式化工作,但是,它使用所有占位符中的当前图像的值。为什么会这样?如果我删除当前图像,它与expected_time一样。Python:在.format中格式化多个值

print expected_time 

print "Frame No. {0:06d} Expected: {0:.3f}ms Actual: {0:.3f}ms Difference: {0:.3f}ms".format(currentImage, expected_time, regression_obj.timeFromStart, abs(expected_time - regression_obj.timeFromStart)) 

OUTPUT:

Frame No. 000001 Expected: 1.000ms Actual: 1.000ms Difference: 1.000ms - ERROR 

回答

3

你在所有的符的使用0,所以它只能打印该项目在第0个位置值:

{0:06d} 
^ 

在Python 2.7 +你可以完全删除它,对于Python 2.6你需要手动指定位置。 (来自docs:改变在2.7版本:该位置参数说明符可以被省略,因此'{} {}'相当于'{0} {1}'。)

对于Python 2.7+:

print "Frame No. {:06d} Expected: {:.3f}ms Actual: {:.3f}ms Difference: {:.3f}ms".format(...) 

对于Python 2.6:

print "Frame No. {0:06d} Expected: {1:.3f}ms Actual: {2:.3f}ms Difference: {3:.3f}ms".format(...) 
0

这将工作:

print "Frame No. {0:06d} Expected: {1:.3f}ms Actual: {2:.3f}ms Difference:{3:.3f}ms".format(currentImage, expected_time, regression_obj.timeFromStart, abs(expected_time - regression_obj.timeFromStart)) 

您的代码不起作用,因为您正在为每个占位符指定与CurrentImage对应的值0。

相关问题