2013-05-28 11:34:53 -04:00
|
|
|
num2words - Convert numbers to words in multiple languages
|
|
|
|
|
==========================================================
|
|
|
|
|
|
2017-02-27 16:05:21 -05:00
|
|
|
.. image:: https://travis-ci.org/savoirfairelinux/num2words.svg?branch=master
|
|
|
|
|
:target: https://travis-ci.org/savoirfairelinux/num2words
|
2017-02-01 14:59:43 -05:00
|
|
|
|
2017-09-06 22:59:20 +02:00
|
|
|
``num2words`` is a library that converts numbers like ``42`` to words like
|
|
|
|
|
``forty-two``. It supports multiple languages (English, Arabic, Danish, French,
|
2017-09-08 19:29:37 +02:00
|
|
|
German, Dutch, Hebrew, Italian, Latvian, Norwegian, Polish, Portuguese, Russian,
|
2017-09-06 22:59:20 +02:00
|
|
|
Spanish and Lithuanian) and can even generate ordinal numbers like
|
|
|
|
|
``forty-second`` (altough this last feature is a bit buggy at the moment).
|
2013-05-28 11:34:53 -04:00
|
|
|
|
|
|
|
|
The project is hosted on https://github.com/savoirfairelinux/num2words
|
|
|
|
|
|
2013-05-28 13:10:06 -04:00
|
|
|
Installation
|
|
|
|
|
------------
|
|
|
|
|
|
|
|
|
|
The easiest way to install ``num2words`` is to use pip::
|
|
|
|
|
|
|
|
|
|
pip install num2words
|
|
|
|
|
|
|
|
|
|
Otherwise, you can download the source package and then execute::
|
|
|
|
|
|
|
|
|
|
python setup.py install
|
|
|
|
|
|
2015-04-06 15:11:59 -04:00
|
|
|
The test suite in this library new, so it's rather thin, but it can be ran with::
|
|
|
|
|
|
|
|
|
|
python setup.py test
|
|
|
|
|
|
2013-05-28 11:34:53 -04:00
|
|
|
Usage
|
|
|
|
|
-----
|
|
|
|
|
|
|
|
|
|
There's only one function to use::
|
|
|
|
|
|
|
|
|
|
>>> from num2words import num2words
|
|
|
|
|
>>> num2words(42)
|
|
|
|
|
forty-two
|
|
|
|
|
>>> num2words(42, ordinal=True)
|
|
|
|
|
forty-second
|
|
|
|
|
>>> num2words(42, lang='fr')
|
|
|
|
|
quarante-deux
|
|
|
|
|
|
|
|
|
|
Besides the numerical argument, there's two optional arguments.
|
|
|
|
|
|
2017-09-06 22:59:20 +02:00
|
|
|
**ordinal:** A boolean flag indicating to return an ordinal number instead of a
|
|
|
|
|
cardinal one.
|
2013-05-28 11:34:53 -04:00
|
|
|
|
2014-06-02 12:48:23 -04:00
|
|
|
**lang:** The language in which to convert the number. Supported values are:
|
|
|
|
|
|
2017-06-21 22:22:27 +03:00
|
|
|
* ``ar`` (Arabic)
|
2014-06-02 12:48:23 -04:00
|
|
|
* ``de`` (German)
|
2017-09-06 22:59:20 +02:00
|
|
|
* ``dk`` (Danish)
|
|
|
|
|
* ``en`` (English, default)
|
|
|
|
|
* ``en_GB`` (British English)
|
|
|
|
|
* ``en_IN`` (Indian English)
|
2014-06-02 12:48:23 -04:00
|
|
|
* ``es`` (Spanish)
|
2017-09-06 22:59:20 +02:00
|
|
|
* ``fr`` (French)
|
|
|
|
|
* ``fr_CH`` (Swiss French)
|
|
|
|
|
* ``fr_DZ`` (Argelia French)
|
|
|
|
|
* ``he`` (Hebrew)
|
|
|
|
|
* ``it`` (Italian)
|
2014-06-02 12:48:23 -04:00
|
|
|
* ``lt`` (Lithuanian)
|
|
|
|
|
* ``lv`` (Latvian)
|
2016-01-11 19:35:11 +01:00
|
|
|
* ``no`` (Norwegian)
|
2015-07-07 13:40:05 -04:00
|
|
|
* ``pl`` (Polish)
|
2016-02-27 12:36:33 -03:00
|
|
|
* ``pt_BR`` (Brazilian Portuguese)
|
2017-09-06 22:59:20 +02:00
|
|
|
* ``ru`` (Russian)
|
2017-09-08 19:29:37 +02:00
|
|
|
* ``nl`` (Dutch)
|
|
|
|
|
|
2014-06-02 12:48:23 -04:00
|
|
|
|
2017-09-06 22:59:20 +02:00
|
|
|
You can supply values like ``fr_FR``, the code will be correctly interpreted. If
|
|
|
|
|
you supply an unsupported language, ``NotImplementedError`` is raised.
|
2013-05-28 11:34:53 -04:00
|
|
|
Therefore, if you want to call ``num2words`` with a fallback, you can do::
|
|
|
|
|
|
|
|
|
|
try:
|
|
|
|
|
return num2words(42, lang=mylang)
|
|
|
|
|
except NotImplementedError:
|
|
|
|
|
return num2words(42, lang='en')
|
|
|
|
|
|
|
|
|
|
History
|
|
|
|
|
-------
|
|
|
|
|
|
2017-09-06 22:59:20 +02:00
|
|
|
``num2words`` is based on an old library, ``pynum2word`` created by Taro Ogawa
|
|
|
|
|
in 2003. Unfortunately, the library stopped being maintained and the author
|
|
|
|
|
can't be reached. There was another developer, Marius Grigaitis, who in 2011
|
|
|
|
|
added Lithuanian support, but didn't take over maintenance of the project.
|
2013-05-28 11:34:53 -04:00
|
|
|
|
2017-09-06 22:59:20 +02:00
|
|
|
I am thus basing myself on Marius Grigaitis' improvements and re-publishing
|
|
|
|
|
``pynum2word`` as ``num2words``.
|
2013-05-28 11:34:53 -04:00
|
|
|
|
|
|
|
|
Virgil Dupras, Savoir-faire Linux
|