mathparse is a library for solving mathematical equations contained in strings
Project description
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.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file mathparse-0.2.7.tar.gz.
File metadata
- Download URL: mathparse-0.2.7.tar.gz
- Upload date:
- Size: 31.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.9.21
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
af6143fae5f3171ccda6e8db1f08969c1765309382ca9c0655b9c18d589138ac
|
|
| MD5 |
5ef27a173be159ca1797267d61df0e81
|
|
| BLAKE2b-256 |
18cb448cbcdd8654bc8240d85a2cb50c97ea976ec0bb163f5d012d2ac1c8184b
|
File details
Details for the file mathparse-0.2.7-py3-none-any.whl.
File metadata
- Download URL: mathparse-0.2.7-py3-none-any.whl
- Upload date:
- Size: 22.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.9.21
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1f43353c4e1384d0d16cf84850d759d38434c48ff0c9d948844fe388d6f2b2fa
|
|
| MD5 |
4539ecce7a3e7f4f6f0477dc1a1e1a52
|
|
| BLAKE2b-256 |
e71b6b9aca6884627efc1a94c301b257ce9a563a324c7a540c92548f6f7e5701
|