Takes a number and converts it to Persian word form

5j9 5j9 Last update: Jul 23, 2022
https://travis-ci.org/5j9/num2fawords.svg?branch=masterhttps://codecov.io/github/5j9/num2fawords/coverage.svg?branch=masterhttps://ci.appveyor.com/api/projects/status/github/5j9/num2fawords?svg=true&branch=master

num2fawords

num2fawords is a highly customizable library which provides functions to convert a number (int, float, Decimal, Fraction, or str) into Persian word form.

Installation

  • Python 3.4+ is required
  • pip install 'setuptools>=36.2.1'
  • pip install num2fawords

Usage

>>> from num2fawords import words, ordinal_words>>> words(1984)'یک هزار و نهصد و هشتاد و چهار'>>> ordinal_words(1232)'یک هزار و دویست و سی و دوم'>>> ordinal_words(123)'یکصد و بیست و سوم'>>> words(1.1e-9)'یک و یک دهم در ده به توان منفی نه'

Obviously, words is used to convert to word form and ordinal_words is for ordinal word from.

words also accepts other common standard types:

>>> words(19.75)'نوزده و هفتاد و پنج صدم'>>> from decimal import Decimal>>> words(Decimal('1.1'))'یک و یک دهم'>>> from fractions import Fraction>>> words(Fraction(-2, 5))'منفی دو پنجم'

The default decimal separator is "و" but it can be changed to "ممیز" (or any other string) as follows:

>>> words(19.75, decimal_separator=' ممیز ')'نوزده ممیز هفتاد و پنج صدم'

Some people prefer, for example, "صد و هفتاد" over its other form "یکصد و هفتاد". This library uses the second form by default which is also used on official Iranian banknotes. But it can be changed:

>>> from num2fawords import HUNDREDS>>> words(170)'یکصد و هفتاد'>>> HUNDREDS[1] = 'صد'>>> words(170)'صد و هفتاد'

Some examples for other arguments of words:

>>> words(7, positive='مثبت ')'مثبت هفت'>>> words(-2, negative='منهای ')'منهای دو'>>> words('۱/۲')'یک دوم'>>> words('1/2', fraction_separator=' تقسیم بر ', ordinal_denominator=False)'یک تقسیم بر دو'>>> words(1.1e-9)'یک و یک دهم در ده به توان منفی نه'>>> words(1.1e-9, scientific_separator=' ضربدر ده به قوهٔ ')'یک و یک دهم ضربدر ده به قوهٔ منفی نه'

Of-course the above arguments can be used together.

If you prefer to change the default argument values once and for all, use the change_defaults function:

>>> from num2fawords import change_defaults, words>>> change_defaults(fraction_separator=' بخش بر ', ordinal_denominator=False)>>> words('۱/۴')'یک بخش بر چهار'

That's all. Enjoy!

Screenshot of pybot with hacker theme

A Anti-DDoS script to protect Nginx web servers using Lua with a Javascript based authentication puzzle inspired by Cloudflare I am under attack mode I built my own Anti-DDoS authentication HTML page…

Subscribe to our newsletter