Skip to main content

Rule-based number formatting using Unicode CLDR data

Project description

Unicode RBNF

A pure Python implementation of rule based number formatting (RBNF) using the Unicode Common Locale Data Repository (CLDR).

This lets you spell out numbers for a large number of locales:

from unicode_rbnf import RbnfEngine

engine = RbnfEngine.for_language("en")
assert engine.format_number(1234) == "one thousand two hundred thirty-four"

Depending on the locale, different rulesets are supported as well:

from unicode_rbnf import RbnfEngine, RulesetName

engine = RbnfEngine.for_language("en")
assert engine.format_number(1999, RulesetName.YEAR) == "nineteen ninety-nine"
assert engine.format_number(11, RulesetName.ORDINAL) == "eleventh"

Supported locales

See: https://github.com/unicode-org/cldr/tree/release-44/common/rbnf

Engine implementation

Not all features of the RBNF engine are implemented. The following features are available:

  • Literal text (hundred)
  • Quotient substitution (<< or ←←)
  • Reminder substitution (>> or →→)
  • Optional substitution ([...])
  • Rule substituton (←%ruleset_name←)
  • Rule replacement (=%ruleset_name=)
  • Special rules:
    • Negative numbers (-x)
    • Improper fractions (x.x)
    • Not a number (NaN)
    • Infinity (Inf)

Some features that will need to be added eventually:

  • Proper fraction rules (0.x)
  • Preceding reminder substitution (>>> or →→→)
  • Number format strings (==)

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

unicode_rbnf-1.3.0.tar.gz (83.4 kB view details)

Uploaded Source

Built Distribution

unicode_rbnf-1.3.0-py3-none-any.whl (137.1 kB view details)

Uploaded Python 3

File details

Details for the file unicode_rbnf-1.3.0.tar.gz.

File metadata

  • Download URL: unicode_rbnf-1.3.0.tar.gz
  • Upload date:
  • Size: 83.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.2

File hashes

Hashes for unicode_rbnf-1.3.0.tar.gz
Algorithm Hash digest
SHA256 b37e246cec31fb8fda63737e7359063594835000ecf960a0ae098d45f8b2109a
MD5 fda8641ee8ca880b192ef9a91d942da8
BLAKE2b-256 bc5f4113917ea5710d93681ad68f9499b5b4f75d45ae0fbf45e6e4459bb4b843

See more details on using hashes here.

Provenance

File details

Details for the file unicode_rbnf-1.3.0-py3-none-any.whl.

File metadata

  • Download URL: unicode_rbnf-1.3.0-py3-none-any.whl
  • Upload date:
  • Size: 137.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.2

File hashes

Hashes for unicode_rbnf-1.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 7378e9f1ec248ae29b811a9c95f85f5ea86a58f2fc4b2ecaab92aa16f806dba3
MD5 aaab764520bb6dcae937c0e8e31e7dad
BLAKE2b-256 3ac658cc1ae186eaa352da9dc4080c3085cd05efbd9ad450e6a41eb2db1ff655

See more details on using hashes here.

Provenance

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