2014-01-29 87 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。

相關問題