跳转到主要内容

将数字转换为文字的模块。易于扩展。

项目描述

num2words库 - 多语言中将数字转换为文字

.. 图像:: https://img.shields.io/pypi/v/num2words.svg :target: https://pypi.python.org/pypi/num2words

.. 图像:: https://travis-ci.org/savoirfairelinux/num2words.svg?branch=master :target: https://travis-ci.org/savoirfairelinux/num2words

.. 图像:: 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(白俄罗斯语)
  • cz(捷克语)
  • de(德语)
  • dk(丹麦语)
  • en_GB(英语 - 英国)
  • en_IN(英语 - 印度)
  • en_NG(英语 - 尼日利亚)
  • es(西班牙语)
  • es_CO(西班牙语 - 哥伦比亚)
  • es_VE(西班牙语 - 委内瑞拉)
  • es_GT(西班牙语 - 危地马拉)
  • eu(EURO)
  • 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 是基于由 Taro Ogawa 于 2003 年创建的一个旧库 pynum2word。不幸的是,该库停止了维护,而且作者无法联系。还有另一位开发者 Marius Grigaitis,他在 2011 年添加了立陶宛语支持,但并未接管项目的维护。

因此,我基于 Marius Grigaitis 的改进,重新发布 pynum2wordnum2words

Virgil Dupras,Savoir-faire Linux

变更日志

版本 0.5.13 -- 2023/10/18

  • 修复了巴西葡萄牙语代码中当百位精确时引用千位的问题。 (#421)
  • 修复了当百位精确时亿、万亿等问题。 (#436)
  • 修复了负数问题 (#477)
  • 修复 lang_DK 问题 (#366)
  • 挪威提升 (#484)
  • BYN 到 EU 和 RU (#439)
  • 将 python3.6 更改为 python3.11,因为 Ubuntu 22.04 中已弃用 (#494)
  • 添加阿塞拜疆语支持 (#495)
  • 添加冰岛语 (#380)
  • 希伯来语长格式拼写、性别、序数、分数、maxval=1e66、构造形式 (#490)
  • 修复 15、16、17、18、19 问题 (#505)
  • 添加对尼日利亚奈拉的支持 (#507)
  • 修复阿拉伯语中 num2words 的几个问题 (#512)
  • 支持危地马拉货币 (#510)
  • 修复 #508:处理意大利语 to_ordinal 中的字符串输入 (#518)
  • 添加斯洛伐克语支持 (#533)
  • 为乌克兰添加性别和形态变化支持 (#530)
  • 为俄语添加性别 (#503)
  • lang By Added (#506)
  • 将沙特里亚尔添加到英语 (#531)

版本 0.5.12 -- 2022/08/19

  • 支持日本令和 (令和/れいわ) 时代。 (#412)
  • 添加基本的波斯语支持 (#354)
  • 添加塔吉克语支持 (#406)
  • 修复阿姆哈拉语支持 (#465)
  • 修复希伯来语的复数化和实现 to_currency (#330)
  • 添加对意大利语中一些货币的翻译支持 (#434)
  • 修复波兰二十 (#345)
  • 为 ru 和 en 添加 uzs (#422)
  • 添加对世界语数字的支持。 (#387)
  • [ADD] 为土耳其添加序数数字 (#468)
  • 修复荷兰语中的零点问题 (#326)

版本 0.5.11 -- 2022/08/03

  • 将 KZT 和 UAH 货币添加到 lang RU (#264)
  • 添加 es_NI 货币 (#276)
  • 更新 .gitignore 以添加 .eggs/ 目录 (#280)
  • 修复希伯来语支持 (#289)
  • 更新 test_tr.py 以提高覆盖率 (#298)
  • 将 12,345 添加到 ES 测试套件以增加覆盖率 (#287)
  • 添加 lang_DK.py 的简单测试 (#286)
  • 添加 lang_EN.py 的测试用例 (#288)
  • 为 base.py 添加更多测试 (#283)
  • 修复 IT 语言中 21(基数和序数)的拼写错误 (#270)
  • 罗马尼亚问题 259 (#260)
  • 添加泰卢固语支持/修复卡纳达语中的错误 (#263)
  • 添加哈萨克语(KZ)支持 (#306)
  • 更新 README.rst (#307)
  • 添加匈牙利语支持 (#310)
  • [UPD] Readme 文件 (#363)
  • [ADD] num2words:添加几种货币的西班牙语翻译 (#356)
  • 添加瑞典语,包括测试用例 (#352)
  • 修复 lang_PT_BR 中的重复行 (#355)
  • 修复荷兰语(NL)中的 ordinal_num 输出 (#369)
  • 波兰序数 (#367)
  • [tr] 返回土耳其 0 序数和基数 (#347)
  • 改进乌克兰支持,并在 CZ、KZ、LT、LV、PL、RU、SR 语言中进行了一些小的修复 (#400)
  • feat: ci:用 github workflows 替换 travis (#448)
  • 添加缺失的重音符号("dieciséis"、"dólar"、"dólares"、"veintiún"),改进货币性别处理,修复英镑分名称 (#443)

版本 0.5.10 -- 2019/05/12

  • 添加卡纳达语言本地化 (#243)
  • 撤销错误更改的一些版权 (#254)
  • 将印度卢比添加到支持的货币 (#248)
  • 改进德语和法语货币功能 (#247)
  • 改进斯洛文尼亚本地化 (#246)
  • 改进西班牙语本地化 (#240)
  • 修复源代码中的“seperator”拼写错误 (#238)
  • 将字符串转换为十进制值 (#223)
  • 改进德语本地化和测试覆盖率 (#237)
  • 改进波兰语本地化 (#233)
  • 修复法语中以1结尾的序数 (#236)

版本 0.5.9 -- 2019/01/10

  • 修复发布 0.5.8 中的编码问题 (#229)
  • 改进波兰语本地化 (#228)

版本 0.5.8 -- 2018/11/17

  • 添加葡萄牙语(葡萄牙)本地化 (#198)
  • 添加命令行工具使用 num2words
  • 使用越南语的 ISO 语言代码
  • 改进韩语本地化 (#219)
  • 改进塞尔维亚语(拉丁语)本地化 (#207)
  • 改进测试设置 (#220)
  • 改进德语本地化 (#214) (#222)
  • 改进罗马尼亚语本地化 (#215)
  • 改进西班牙语本地化 (#187) (#200)
  • 改进俄语本地化 (#211) (#212)
  • 改进法语本地化 (23902ab)
  • 改进阿拉伯语本地化 (#176)
  • 改进立陶宛语和拉脱维亚语本地化 (#185)
  • 改进乌克兰语本地化 (#183)

版本 0.5.7 -- 2018/06/27

  • 添加芬兰语本地化. (#170)
  • 添加日语本地化. (#171)
  • 添加比利时法语本地化. (#151)
  • 添加捷克语本地化. (#154)
  • 添加泰语本地化. (#139)
  • 改进英语本地化. (#144)
  • 改进西班牙语本地化. (#167)
  • 改进意大利语本地化. (#143)
  • 改进文档. (#155, #145, #174)

版本 0.5.6 -- 2017/11/22

  • 重构 to_currency (#135)
  • 允许使用其他转换器 to_currency, to_year (#95)
  • 修复代码以遵守 PEP8 (#98, #105)
  • 添加斯洛文尼亚语本地化 (#97)
  • 添加乌克兰语本地化 (#93)
  • 添加荷兰语本地化 (#91)
  • 添加阿尔及利亚法语本地化 (#86)
  • 添加土耳其语本地化 (#85)

版本 0.5.5 -- 2017/07/02

  • 添加阿拉伯语本地化 (#72)
  • 添加西班牙语-哥伦比亚和西班牙语-委内瑞拉本地化 (#67)
  • 添加越南语本地化 (#61)
  • 添加意大利语本地化 (#56, #59)
  • 改进俄语本地化 (#62)
  • 改进波兰语本地化 (#58)

版本 0.5.4 -- 2016/10/18

  • 大量新增语言!
  • 添加波兰语本地化. (#23)
  • 添加瑞士法语本地化. (#38)
  • 添加俄语本地化. (#28, #46, #48)
  • 添加印度尼西亚语本地化. (#29)
  • 添加挪威语本地化. (#33)
  • 添加丹麦语本地化. (#40)
  • 添加巴西语本地化. (#37, #47)
  • 改进德语本地化. (#25, #27, #49)
  • 改进立陶宛语本地化. (#52)
  • 改进浮点数拼写. (#24)

版本 0.5.3 -- 2015/06/09

  • 修复打包问题. (#21, #22)

版本 0.5.2 -- 2015/01/23

  • 添加拉脱维亚语本地化. (#9)
  • 改进西班牙语本地化. (#10, #13, #14)
  • 改进立陶宛语本地化. (#12)

版本 0.5.1 -- 2014/03/14

  • 添加 Python 3 支持,使用 2to3. (#3)
  • 修复西班牙语中大数字的问题. (#2)
  • 修复西班牙语中 30 到 40 的翻译错误. (#4)
  • 修复英语中单词连接的问题. (#8)

版本 0.5.0 -- 2013/05/28

  • 根据旧项目 pynum2word 创建 num2words

项目详情


下载文件

下载适合您平台的文件。如果您不确定该选择哪个,请了解更多关于安装包的信息。

源代码分发

num2words-0.5.13.tar.gz (188.4 kB 查看哈希值)

上传时间 源代码

构建分发

num2words-0.5.13-py3-none-any.whl (143.3 kB 查看哈希值)

上传时间 Python 3

支持