在Python中,如何将字符串和百分比的格式化机制结合起来?

在Python中,如何将字符串和百分比的格式化机制结合起来?,python,string,format,percentage,Python,String,Format,Percentage,在python中,我想格式化一个字符串,将两个字符串按百分比组合在一起。从这篇文章中,我知道如何设置我们可以使用的百分比 >>> print "{:.0%}".format(1/3) 33% 在我的情况下,我想做一些 >>> print "{0}/{1} = {:.0%}".format('1', '3', 1/3) 1/3 = 33% 但是上面的代码返回 ValueError: cannot switch from manual field specif

在python中,我想格式化一个字符串,将两个字符串按百分比组合在一起。从这篇文章中,我知道如何设置我们可以使用的百分比

>>> print "{:.0%}".format(1/3)
33%
在我的情况下,我想做一些

>>> print "{0}/{1} = {:.0%}".format('1', '3', 1/3)
1/3 = 33%
但是上面的代码返回

ValueError: cannot switch from manual field specification to automatic field numbering

那么,像这样格式化字符串的正确方法是什么?谢谢大家!

它的意思是,您正在为前两个参数
{0}
{1}
提供编号放置,然后突然有一个参数没有定位号,因此它无法推断放置哪个参数。(和编号时一样,它们可以是任意顺序或重复)因此您需要确保最后一项也已编号

print "{0}/{1} = {2:.0%}".format('1', '3', 1/3)
或者,让它计算出格式参数的位置:

print("{}/{} = {:.0%}".format('1', '3', 1/3))

在Python2.7中

>>> print "{:.0%}".format(1/3)
0%
我想这应该是不受支持的百分比

在python3.5中

能正常工作吗

  • 带位置参数
  • 没有位置参数

  • 所以,两种书写方式不能混用

    谢谢!这是一种魅力!!!我以前没意识到冒号是我们应该放定位号的地方!第二种方法更简单!有学问的一般来说,最好先查看官方文件。谢谢sunnky!我得到了它!
    >>> print("{}/{} = {:.0%}".format('1', '3', 1/3))
    1/3 = 33%
    
    >>> print("{0}/{1} = {2:.0%}".format('1', '3', 1/3))
    1/3 = 33%