第十五章:国际化和本地化-locale:文化本地化API-格式化数字

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

这会删除分组符号,另外小时分隔符总算被转换为一个点号(.)。

猜你喜欢

转载自blog.csdn.net/weixin_43193719/article/details/94832457