Skip to main content

A small package for handy conversion of german numerals (also ordinal / signed) written as words to numbers.

Project description

ZahlWort2num (v.0.4.2)

:de: :de: :de: A small but useful (due shortage of/low quality support for lang_de) package for handy conversion of german numerals (incl. ordinal number) written as string to the from numbers.

To put it differently: It allows reverse text normalization for numbers.

This package might be a good complementary lib to https://github.com/savoirfairelinux/num2words

:crying_cat_face: Currently is doesn't support swiss variant. TBD :switzerland:

PyPi direct page of project

https://pypi.org/project/zahlwort2num/

Installation

pip2 install zahlwort2num

Usage

Definition:

import zahlwort2num as w2n

Few examples:

w2n.convert('Zweihundertfünfundzwanzig') # => 225
w2n.convert('neunte') # => '9.' 
w2n.convert('minus siebenhundert Millionen achtundsiebzig') # => -700000078

or even stuff like: :see_no_evil:

w2n.convert('sechshundertdreiundfünfzigtausendfünfhunderteinundzwanzig') # => 653521

Command line:

  • (Obviously it is better to use a parameter enclosed with apostrophs due to possible spaces)
bin/zahlwort2num-convert 'eine Million siebenhunderteinundzwanzig'

Development

Before doing anything. Install flake8 locally by

python3 -m pip install -r requirements.txt

Make sure tests are passing

python3 -m unittest

and you locally run linter via

flake8 ./zahlwort2num/*.py --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics

WIKI

TBD

Already implemented features :sunglasses:

  • Theoretically it works for any numbers from range 0 upto 999 * 10^27 [big numbers]
  • Command-line mode (see above)
  • Supported with ordinal numerals (incl. inflections [sufficies like 'ste', 'ten' etc. ])
    In this case it returns coerced String type value e.g '15.' instead of Integer :point_up:
  • Relative mild rules in terms of trailing whitespaces, lower/upper-case (unification).
  • Handling of signed numerals (also ordinal ones) e.g 'minus zehn'

TODO / Known issues

  • Make POC, functional for all common cases

  • Ordinal number support

  • Take care for exceptions / trailing whitespaces etc.

  • Make structure + publish as PyPI package

  • Command line support :computer:

  • Added support for both non-direct usage e.g einhundert / hundert

  • Simplify/refactor POC code, add better documentation

  • Zwo variant

  • Added linter with Test Suite as hook

  • More comprehensible tests

  • Swiss variant

  • More fault tolerant (ß -> ss) etc

  • Larger scale than 10^60

  • Ordinal with very large numbers (without addons) e.g Millionste

  • Few benchmark improvements (e.g tail recursion etc)

  • Better error handling + validation for idiotical cases (e.g minus null Miliarde)

  • Support for fractions?

Thanks

  • @warichet for addressing problem
  • @spatialbitz for writing simple fix :+1:
  • @psawa - adding support for zwo case
  • ... lastly to any of you who uses this package ;-)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

zahlwort2num-0.4.2.tar.gz (8.6 kB view details)

Uploaded Source

Built Distribution

zahlwort2num-0.4.2-py3-none-any.whl (8.1 kB view details)

Uploaded Python 3

File details

Details for the file zahlwort2num-0.4.2.tar.gz.

File metadata

  • Download URL: zahlwort2num-0.4.2.tar.gz
  • Upload date:
  • Size: 8.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.10.7

File hashes

Hashes for zahlwort2num-0.4.2.tar.gz
Algorithm Hash digest
SHA256 304eed9b2da4482803bcfa9c9ea16bd0eb9fded2b21bbae12b6cb90cd8d2da5b
MD5 f969821bcbce37404802606b39d3fc72
BLAKE2b-256 796ae58ad1e9ee67d4395f1ceafde041f9524ac67d276dda0e687841c2e2be6a

See more details on using hashes here.

File details

Details for the file zahlwort2num-0.4.2-py3-none-any.whl.

File metadata

File hashes

Hashes for zahlwort2num-0.4.2-py3-none-any.whl
Algorithm Hash digest
SHA256 91de4b94b4d1f6ed85d79ae5b90e3f12e1afacf67a0a1c988bfa542c2823ae47
MD5 d64b979f35a5a3f62cc5ab8b05d692a8
BLAKE2b-256 49eb82b282c829be8b4566f417fde63896c2af8ce3c1eca3cb97ada055c5862c

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page