我正在尝试使用带有浮动格式化程序的行打印到2个小数点,如下所示:
print "You have a discount of 20% and the final cost of the item is'%.2f' dollars." % price
但是当我这样做时,我收到了这个错误:
ValueError:索引27处的格式字符'a'(0x61)不受支持
这意味着什么?如何防止它发生?
答案 0 :(得分:4)
问题在于您的20%
,Python正在将...20% and...
作为"% a" % price
阅读,并且它不会将%a
识别为格式。
您可以使用20%%
作为@Anand指出,或者您可以使用字符串.format()
:
>>> price = 29.99
>>> print "You have a discount of 20% and the final cost of the item is {:.2f} dollars.".format(price)
You have a discount of 20% and the final cost of the item is 29.99 dollars.
此处:.2f
与%.2f
一样为您提供2位小数。
答案 1 :(得分:2)
我认为问题出在%
之后的单20
符号,python可能认为它是格式说明符。
试试这个 -
print "You have a discount of 20%% and the final cost of the item is'%.2f' dollars." % price
答案 2 :(得分:0)
字符串上的ObjectAnimator
运算符将其左操作数视为格式说明符。其中的所有%
标志都将被特别处理。
但%
之后的%
并非如此,因此必须正确转义:写20
。这告诉格式说明符处理例程将其视为文字20%%
。
或者,正如Scott所写,使用较新的%
内容。