15.2.3 格式化数字
与货币无关的数字也会根据本地化环境以不同方式格式化。具体来讲,数字中会有一些分组(grouping)字符,用于将大数字分隔为可读的小块。
import locale
sample_locales = [
('USA','en_US'),
('France','fr_FR'),
('Spain','es_ES'),
('Portugal','pt_PT'),
('Poland','pl_PL'),
]
print('{:>10} {:>10} {:>15}'.format(
'Locale','Integer','Float')
)
for name,loc in sample_locales:
locale.setlocale(locale.LC_ALL,loc)
print('{:>10}'.format(name),end=' ')
print(locale.format('%10d',123456,grouping=True),end=' ')
print(locale.firmat('%15.2f',123456.78,grouping=True))
要格式化不带货币符号的数字,可以使用format()而不是currency()。
要把根据本地化环境格式化的数字转换为规范化的数字(格式与本地化环境无关),可以使用delocalize()。
import locale
sample_locales = [
('USA','en_US'),
('France','fr_FR'),
('Spain','es_ES'),
('Portugal','pt_PT'),
('Poland','pl_PL'),
]
for name,loc in sample_locales:
locale.setlocale(locale.LC_ALL,loc)
localized = locale.format('%0.2f',123456.78,grouping=True)
delocalized = locale.delocalize(localized)
print('{:>10}: {:>10} {:>10}'.format(
name,
localized,
delocalized,
))
这会删除分组符号,另外小时分隔符总算被转换为一个点号(.)。