如何使用字符串格式打印“%”符号?

How do I print a '%' sign using string formatting?

我制作了一个计算百分比的小脚本;但是,我希望在打印的消息中实际包含 %...

一开始就试过了 - 没用...

oFile.write("Percentage: %s%"\n" % percent)

然后我尝试了 "Percentage: %s"%"\n" % percent" 但没有用。

我希望输出为:

Percentage: x%

我不断得到

TypeError: not all arguments converted during string formatting

要打印 % 标志,您需要 'escape' 它与另一个 % 标志:

percent = 12
print "Percentage: %s %%\n" % percent  # Note the double % sign
>>> Percentage: 12 %

编辑

现在 python3 更好(也更易读)的方法是使用 f-strings。请注意,其他解决方案(如下所示)也有效:

$python3
>>> percent = 12
>>> print(f'Percentage: {percent}%') # f-string
Percentage: 12%
>>> print('Percentage: {0}%'.format(percent)) # str format method
Percentage: 12%
>>> print('Percentage: %s%%' % percent) # older format, we 'escape' the '%' character
Percentage: 12%

或者使用format()函数,更优雅

percent = 12
print "Percentage: {}%".format(percent)

4年后编辑

现在在 Python3x 中 print() 需要括号。

percent = 12
print ("Percentage: {}%".format(percent))

新的 Python 3 方法是使用格式字符串。

percent = 12
print("Percentage: {0} %\n".format(percent))
>>> Percentage: 12 %

这在 Python > 2.6 中也受支持。

在此处查看文档:Python 3 and Python 2

format()更优雅,但模数符号似乎更快!

http://inre.dundeemt.com/2016-01-13/string-modulo-vs-format-fight/ - 表明取模快了约 30%!

x = 0.25
y = -0.25
print("\nOriginal Number: ", x)
print("Formatted Number with percentage: "+"{:.2%}".format(x));
print("Original Number: ", y)
print("Formatted Number with percentage: "+"{:.2%}".format(y));
print()

示例输出:

Original Number:  0.25                                                                                        
Formatted Number with percentage: 25.00%                                                                      
Original Number:  -0.25                                                                                       
Formatted Number with percentage: -25.00% 

有助于正确格式化百分比值

+++

使用百分比的 ascii 值 - 即 37

print( '12' + str(chr(37)) )
print("Interest Rate (APR): " , format(APR, '.0f'),'%')