num2words库 - 将数字转换为多种语言的文字
.. image:: https://img.shields.io/pypi/v/num2words.svg :target: https://pypi.python.org/pypi/num2words
.. image:: https://travis-ci.org/savoirfairelinux/num2words.svg?branch=master :target: https://travis-ci.org/savoirfairelinux/num2words
.. image:: https://coveralls.io/repos/github/savoirfairelinux/num2words/badge.svg?branch=master :target: https://coveralls.io/github/savoirfairelinux/num2words?branch=master
num2words
是一个将数字如42
转换为文字如forty-two
的库。它支持多种语言(完整语言列表见下文),甚至可以生成序数词如forty-second
(尽管目前这个功能对某些语言来说还有些bug)。
该项目托管在GitHub_上。欢迎贡献。
.. _GitHub: https://github.com/savoirfairelinux/num2words
安装
安装num2words
最简单的方法是使用pip::
pip install num2words
或者,你可以下载源码包,然后执行::
python setup.py install
这个库的测试套件是新的,所以还比较简单,但可以通过以下命令运行::
python setup.py test
要运行完整的CI测试套件(包括代码检查和多个Python环境)::
pip install tox
tox
使用方法
命令行::
$ num2words 10001
ten thousand and one
$ num2words 24,120.10
twenty-four thousand, one hundred and twenty point one
$ num2words 24,120.10 -l es
veinticuatro mil ciento veinte punto uno
$num2words 2.14 -l es --to currency
dos euros con catorce céntimos
在代码中只需使用一个函数::
>>> from num2words import num2words
>>> num2words(42)
forty-two
>>> num2words(42, to='ordinal')
forty-second
>>> num2words(42, lang='fr')
quarante-deux
除了数字参数外,还有两个主要的可选参数,to:
和lang:
to: 要使用的转换器。支持的值有:
cardinal
(默认)ordinal
ordinal_num
year
currency
lang: 要将数字转换成的语言。支持的值有:
en
(英语,默认)am
(阿姆哈拉语)ar
(阿拉伯语)az
(阿塞拜疆语)by
(白俄罗斯语)ce
(车臣语)cy
(威尔士语)cz
(捷克语)de
(德语)dk
(丹麦语)en_GB
(英语 - 英国)en_IN
(英语 - 印度)en_NG
(英语 - 尼日利亚)es
(西班牙语)es_CO
(西班牙语 - 哥伦比亚)es_CR
(西班牙语 - 哥斯达黎加)es_VE
(西班牙语 - 委内瑞拉)es_GT
(西班牙语 - 危地马拉)eu
(欧元)fa
(波斯语)fi
(芬兰语)fr
(法语)fr_CH
(法语 - 瑞士)fr_BE
(法语 - 比利时)fr_DZ
(法语 - 阿尔及利亚)he
(希伯来语)hu
(匈牙利语)id
(印度尼西亚语)is
(冰岛语)it
(意大利语)ja
(日语)kn
(卡纳达语)ko
(韩语)kz
(哈萨克语)lt
(立陶宛语)lv
(拉脱维亚语)no
(挪威语)pl
(波兰语)pt
(葡萄牙语)pt_BR
(葡萄牙语 - 巴西)sl
(斯洛文尼亚语)sr
(塞尔维亚语)sv
(瑞典语)ro
(罗马尼亚语)ru
(俄语)te
(泰卢固语)tg
(塔吉克语)tr
(土耳其语)th
(泰语)vi
(越南语)nl
(荷兰语)uk
(乌克兰语)
你可以提供类似fr_FR
的值;如果国家不存在但语言存在,代码会回退到基本语言(即fr
)。如果你提供了不支持的语言,会引发NotImplementedError
。因此,如果你想用回退方式调用num2words
,你可以这样做::
try:
return num2words(42, lang=mylang)
except NotImplementedError:
return num2words(42, lang='en')
此外,一些转换器和语言支持其他可选参数,这些参数在实际使用中是必要的。
Wiki
有关一些本地化的额外信息,请查看Wiki_。 欢迎提出改进Wiki的建议。
.. _Wiki: https://github.com/savoirfairelinux/num2words/wiki
历史
num2words
基于一个旧库pynum2word
,由Taro Ogawa在2003年创建。不幸的是,该库停止维护,作者也无法联系到。另一位开发者Marius Grigaitis在2011年添加了立陶宛语支持,但没有接管项目的维护工作。
因此,我基于Marius Grigaitis的改进,将pynum2word
重新发布为num2words
。
Virgil Dupras, Savoir-faire Linux