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.
Metadata
Release files for azrideus-mathparse 0.2.12
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| azrideus_mathparse-0.2.12.tar.gz | 35.4 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| azrideus_mathparse-0.2.12-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 61.7 kB
Release files / azrideus_mathparse-0.2.12.tar.gz
| Download URL | azrideus_mathparse-0.2.12.tar.gz |
|---|---|
| Size | 35.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
f5574384cb85d6248396ec3fe44c289cdba7c3debe913df8f5120509b73165cc
|
|
BLAKE2b-256 checksum How to use checksums |
bb264c682f5588cf465718d7556d8a081dca89b264c6a3180e16a4a2b526eac7
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.6
|
Release files / azrideus_mathparse-0.2.12-py3-none-any.whl
| Download URL | azrideus_mathparse-0.2.12-py3-none-any.whl |
|---|---|
| Size | 26.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
58242e16117a46743441e53aa7e8c89be5a331e27d89a47f8037a683ac3fafdb
|
|
BLAKE2b-256 checksum How to use checksums |
7765f0438eeadb0bb86f24d227f4f4271ec352f2d32880a9909afe6ad9b3ade3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.6
|