Rome is the first industrial-strength Roman numerals implementation for Python. It features Roman-to-Arabic and Arabic-to-Roman numerals convertion, as well as normalization of denormalized Roman numerals using unified object-oriented interface. It is developed using test-driven development, and features an extensive test-suite.
pip install rome==0.0.3
>>> from rome import Roman >>> Roman('IX') Roman('IX') >>> str(Roman('IX')) 'IX' >>> int(Roman('IX')) # to Arabic numerals 9 >>> Roman('IX') == 9 True >>> Roman('IX') + Roman('XI') == Roman('XX') True >>> Roman('XXI') - 13 == 8 True >>> Roman(4) # from Arabic numerals Roman('IV') >>> Roman(1903) Roman('MCMIII') >>> Roman('IIII') # bring to normalized form Roman('IV') >>> Roman('MDCCCCLXXXXVIIII') Roman('MCMXCIX') >>> int(Roman('MCMXCIX')) 1999 >>> int(Roman('M cM xC iX')) # spaces and mixed case are ... # allowed for readability 1999