Skip to main content

mathparse

A secure, multilingual mathematical expression evaluator for Python

mathparse is a Python library that safely parses and evaluates mathematical expressions from strings, supporting both numeric operators and natural language words across 13+ languages. Unlike Python's dangerous eval() function, mathparse provides a secure, zero-dependency solution for evaluating user-provided mathematical expressions.

Why mathparse?

Security First - Never uses eval(), protecting against arbitrary code execution
Multilingual Support - Parse math in English, Spanish, French, German, Chinese, and 8+ more languages
Zero Dependencies - Pure Python implementation with no external requirements
Natural Language - Understands "fifty times twenty plus ten" alongside standard notation
Production Ready - Used in chatbots, calculators, voice assistants, and educational applications
Well Tested - Comprehensive test suite ensuring reliability

Quick Examples

from mathparse import mathparse

# Standard numeric expressions
mathparse.parse('50 * (85 / 100)')
>>> 42.5

# Natural language in English
mathparse.parse('one hundred times fifty four', language='ENG')
>>> 5400

# Mixed notation
mathparse.parse('(seven * nine) + 8 - (45 plus two)', language='ENG')
>>> 24

# Other languages (French, Spanish, German, Chinese, etc.)
mathparse.parse('cinq plus trois', language='FRE')
>>> 8

mathparse.parse('cinco más tres', language='ESP')
>>> 8

Use Cases

  • 🤖 Chatbots & Voice Assistants - Parse natural language math queries
  • 🧮 Calculator Applications - Build safe calculators that accept text input
  • 📚 Educational Software - Evaluate student-provided math expressions
  • 🌐 Multilingual Apps - Support math parsing in users' native languages
  • 🔐 Secure Code Evaluation - Replace dangerous eval() calls with safe parsing
  • 📊 Data Processing - Extract and calculate values from natural language text

Security: Why Not eval()?

Python's eval() function executes arbitrary code, creating severe security vulnerabilities:

# DANGEROUS - Never do this with user input!
eval("__import__('os').system('rm -rf /')")  # Deletes files
eval("__import__('requests').get('evil.com')")  # Network access

mathparse is the safe alternative:

Feature eval() mathparse
Mathematical expressions
Arbitrary code execution ⚠️ YES - DANGEROUS ❌ No
File system access ⚠️ YES - DANGEROUS ❌ No
Network access ⚠️ YES - DANGEROUS ❌ No
Import statements ⚠️ YES - DANGEROUS ❌ No
Security risk 🔴 CRITICAL 🟢 Safe
Dependencies 0 0
Natural language support ❌ No ✅ Yes
Multilingual ❌ No ✅ 13+ languages

mathparse uses postfix (Reverse Polish) notation internally, ensuring only valid mathematical operations are performed. See our security documentation for technical details.

Performance

  • Fast: Simple numeric expressions parse in microseconds
  • Efficient: Minimal memory footprint, suitable for high-volume applications
  • Scalable: Linear time complexity for expression evaluation

Language Support

The language parameter must be set in order to evaluate an equation that uses word operators. The language code should be a valid ISO 639-2 language code.

Installation

pip install mathparse

Documentation

See the full documentation at https://mathparse.chatterbot.us

Changelog

See release notes for changes.

Release files for mathparse 0.2.9

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for mathparse 0.2.9
File Size Uploaded
mathparse-0.2.9.tar.gz 32.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for mathparse 0.2.9
File Interpreter ABI Platform
mathparse-0.2.9-py3-none-any.whl Python 3 none any Details

Total release size: 54.9 kB

Release files / mathparse-0.2.9.tar.gz

Download URL mathparse-0.2.9.tar.gz
Size 32.1 kB
Tags Source
SHA-256 checksum
How to use checksums
39076aaedce5219942df6204f67548f4a05529f7c478c0d1a65b50e16694712c
BLAKE2b-256 checksum
How to use checksums
a52f9a6bfa25dd322e6896e13c2e951553074855db6394c39ca23a41a1779ca4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.7

Release files / mathparse-0.2.9-py3-none-any.whl

Download URL mathparse-0.2.9-py3-none-any.whl
Size 22.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
d267f51a5557ddde198da515922942b9060347046409d3ed1cc697e057c37da3
BLAKE2b-256 checksum
How to use checksums
7bd2bfde28a4128ab9c6f237d27c0ea876fbc239acfd8ccb70ff1b0427cc1f1c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.7

Release history Release notifications | RSS feed

This release

0.2.9 This release

2 release files

0.2.8

2 release files

0.2.7

2 release files

0.2.6

2 release files

0.2.5

2 release files

0.2.4

2 release files

0.2.3

2 release files

0.2.2

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.5

2 release files

0.1.2

2 release files

0.1.1

3 release files

0.1.0

2 release files

0.0.1

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page