当打印长整数时,我想添加逗号来“分隔成千上万”。 问题是,我不想将int转换为字符串。 在SO中有一些问题表明:
a = 1234567
print "The number is %s but it's converted to a string" %'{:,d}'.format(a)
====>该数字为1,342,424,242,但它已转换为字符串
我一直在寻找一种不需要转换为字符串的解决方案。 例如,当我想以百分比显示数字时:
b = 0.1234
print "The Norwegian Blue prefers kippin' on it's back! %0.2f%%" % (b*100)
====>挪威蓝更喜欢kippin'! 12.34%
无论如何要做类似的事情,只能用逗号分隔? 谢谢!
编辑:为了更好地解释自己,我的意思是用逗号表示数字,类似于您使用%标记呈现百分比的方式,并且在该点之后仅显示2位小数。您不会更改数字或将其转换为字符串,只会操纵显示/显示的方式。这就是我想要达到的目标。
EDIT2 :我不明白这里的负面情绪。我提出了一种方法来讨论某些问题并询问是否可以用不同的方式完成,这与我给出的一个例子更相似。在搜索了相当多的东西之后,我到达了这两个例子。这可能是一个菜鸟问题,但至少我是单独去做,并在向社区发表讲话之前寻找解决方案。除了不知道答案之外,不确定我做错了什么。 Tnx用于阅读。
答案 0 :(得分:8)
你自己的榜样能够做你想做的事。只需正确编写它而不混合格式样式:
a = 1234567
print "The number is {:,d} but it's converted to a string".format(a)
这是使用现代语法的一个很好的理由。它并不关心参数的类型。它将在对象上使用str
并相应地输出它。
print "The number is {:,d} and John has {} sisters and {} brothers".format(1000000, 2, 3)
答案 1 :(得分:1)
要明确,a
本身不会被更改为字符串。有'{:,d}'.format(a)
创建的临时匿名字符串对象,然后输入"%s" %
:
>>> a = 1234567
>>> "The number is %s but it's converted to a string" %'{:,d}'.format(a)
"The number is 1,234,567 but it's converted to a string"
>>> type(a)
<type 'int'>
>>> a
1234567
因此,a
本身并未发生类似变化,因为您的第二个示例未更改对象b
:
>>> b = 0.1234
>>> "The Norwegian Blue prefers kippin' on it's back! %0.2f%%" % (b*100)
"The Norwegian Blue prefers kippin' on it's back! 12.34%"
>>> type(b)
<type 'float'>
>>> b
0.1234
因此a
和b
的基本值不会发生变化。问题是您使用不太清晰的语法来打印a
。只是做:
>>> "The number is {:,d} but it's NOT converted to a string".format(a)
"The number is 1,234,567 but it's NOT converted to a string"
您无需像在示例中那样执行两个格式化步骤。