ens*_*are 35 python number-formatting
可能重复:
如何使用逗号作为千位分隔符打印数字?
例如:
>> print numberFormat(1234)
>> 1,234
Run Code Online (Sandbox Code Playgroud)
或者Python中是否有内置函数来执行此操作?
mar*_*eau 95
没有人迄今已提到的新','这是在2.7版本加入选项格式化规范的迷你语言 -见PEP 378:格式说明千位分隔符的在Python 2.7文档新增.它很容易使用,因为你不必乱用locale(但由于这个原因,仅限于国际化,请参阅最初的PEP 378).它适用于浮点数,整数和小数 - 以及迷你语言规范中提供的所有其他格式化功能.
样品用法:
print format(1234, ",d") # -> 1,234
print "{:,d}".format(1234) # -> 1,234
Run Code Online (Sandbox Code Playgroud)
注意:虽然这个新功能非常方便,但实际上使用该模块并不是那么难locale,正如其他几个人所建议的那样.优点是,当输出数字,日期和时间等内容时,可以使数字输出自动遵循各个国家/地区使用的适当的千位(和其他)分隔符约定.在不学习大量语言和国家/地区代码的情况下,将计算机的默认设置生效也非常容易.你需要做的就是:
import locale
locale.setlocale(locale.LC_ALL, '') # empty string for platform's default settings
Run Code Online (Sandbox Code Playgroud)
完成后,您可以使用泛型'n'类型代码输出数字(整数和浮点数).我在哪里,逗号被用作千位分隔符,所以在设置如上所示的语言环境之后,会发生这种情况:
print format(1234, "n") # -> 1,234
print "{:n}".format(1234) # -> 1,234
Run Code Online (Sandbox Code Playgroud)
为此目的,世界其他大部分地区使用句点而不是逗号,因此在许多位置设置默认语言环境(或在setlocale()调用中明确指定此类区域的代码)会产生以下结果:
print format(1234, "n") # -> 1.234
print "{:n}".format(1234) # -> 1.234
Run Code Online (Sandbox Code Playgroud)
基于'd'或',d'格式化类型说明符的输出不受使用(或不使用)的影响setlocale().但是,如果您改为使用或函数,则'd'说明符会受到影响.locale.format()locale.format_string()
sys*_*out 11
从webpy 剥离utils.py:
def commify(n):
"""
Add commas to an integer `n`.
>>> commify(1)
'1'
>>> commify(123)
'123'
>>> commify(1234)
'1,234'
>>> commify(1234567890)
'1,234,567,890'
>>> commify(123.0)
'123.0'
>>> commify(1234.5)
'1,234.5'
>>> commify(1234.56789)
'1,234.56789'
>>> commify('%.2f' % 1234.5)
'1,234.50'
>>> commify(None)
>>>
"""
if n is None: return None
n = str(n)
if '.' in n:
dollars, cents = n.split('.')
else:
dollars, cents = n, None
r = []
for i, c in enumerate(str(dollars)[::-1]):
if i and (not (i % 3)):
r.insert(0, ',')
r.insert(0, c)
out = ''.join(r)
if cents:
out += '.' + cents
return out
Run Code Online (Sandbox Code Playgroud)
还有其他的解决方案在这里.
locale.format()在整数上使用,但要注意您环境中的当前语言环境。某些环境可能没有设置或设置为不会给您逗号结果的内容。
这是我必须编写的一些代码来处理这个确切的问题。它会根据您的平台自动为您设置语言环境:
try:
locale.setlocale(locale.LC_ALL, 'en_US.UTF-8') #use locale.format for commafication
except locale.Error:
locale.setlocale(locale.LC_ALL, '') #set to default locale (works on windows)
score = locale.format('%d', player['score'], True)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
40686 次 |
| 最近记录: |