如何使用字符串格式化打印百分号符号(%)?

38

我写了一个简单的脚本来计算百分比,但是我希望在打印的消息中包含 % 符号...

开始尝试这个 - 没有成功...

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

我尝试了 "Percentage: %s"%"\n" % percent",但它没有起作用。

我希望输出结果为:

Percentage: x%

我不停地收到

TypeError: not all arguments converted during string formatting

1
@OliverW:是的,但那个标题和措辞非常不清楚,所以这个应该是规范的。 - smci
6个回答

76

要打印出%符号,你需要用另一个%符号来“转义”它:

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%

13

或者使用更加优美的 format() 函数。

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

四年后的编辑

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

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

5
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)) )

4
新的 Python 3 做法是使用格式化字符串。
percent = 12
print("Percentage: {0} %\n".format(percent))
>>> Percentage: 12 %

这在 Python > 2.6 版本中也得到了支持。

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


2
请注意,花括号内不需要加上 0 - GLHF
1
如果你使用的是Py2.6,则需要@howaboutNO 0 - canni
但是这比好的模数多了稍微多一些,我的懒惰第一世界不喜欢输入字符来获得结果。 - Nathan majicvr.com

2

-2
print("Interest Rate (APR): " , format(APR, '.0f'),'%')

我从我在课堂上制作的利息计算器中提取了这个,这是输出结果: - user15489393
利率(APR):5% - user15489393
3
请将以下英文内容翻译成中文。内容与IT有关。只需提供翻译后的文字内容,不需要进行解释或意译。 - Syscall

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接