A simple price parser for extracting currency and value from strings (currently used as a Pydantic datatype only).
Project description
💰 Price Parser Reworkd: Extract Prices with Ease 💰
Price Parser Reworkd
Price Parser
is a Python library created by reworkd team that provides Pydantic-compatible data types for parsing and extracting price-related information from strings. It allows you to effortlessly handle numeric values, currency symbols, and currency names in a structured and validated way using Pydantic models.
Setup and Installation
Install the library via pip:
pip install price-parser-reworkd
Features
- Extract numeric price values from strings.
- Detect currency symbols and convert them into readable currency names.
- Built on Pydantic for easy integration with modern Python projects.
- Lightweight and production-ready.
Usage
ParserTypeCurrency
Extract both the numeric price value and the currency details (symbol and name).
from pydantic import BaseModel
from price_parser import ParserTypeCurrency
class PriceModel(BaseModel):
price: ParserTypeCurrency
# Example 1: Valid input with currency symbol
price_info = PriceModel(price="$19.99")
print(price_info.price)
# Output: {'currency': 'USD', 'currency_symbol': '$', 'amount': 19.99}
# Example 2: Valid input without a currency
price_info = PriceModel(price=1500.75)
print(price_info.price)
# Output: {'currency': None, 'currency_symbol': None, 'amount': 1500.75}
# Example 3: String with known currency name
price_info = PriceModel(price="EUR 49.99")
print(price_info.price)
# Output: {'currency': 'EUR', 'currency_symbol': '€', 'amount': 49.99}
Example Use Cases
Single Price Extraction
Parse a single price from a string:
from pydantic import BaseModel
from price_parser import ParserTypePrice
class PriceModel(BaseModel):
price: ParserTypePrice()
# Example 1: Parse numeric price from a string
price_info = PriceModel(price="$19.99")
print(price_info.price) # Output: 19.99
# Example 2: Parse numeric price from an integer
price_info = PriceModel(price='€1.500')
print(price_info.price) # Output: 1500.0
# Example 3: Parse numeric price from a float
price_info = PriceModel(price=99.99)
print(price_info.price) # Output: 99.99
# Example 4: Handle invalid or empty input
try:
price_info = PriceModel(price="invalid input")
except ValueError as e:
print(e) # Output: ValueError with explanation
Full Price Details
Extract both the price value and currency details:
from pydantic import BaseModel
from price_parser import ParserTypePrice, ParserTypeCurrency
class CombinedModel(BaseModel):
numeric_price: ParserTypePrice()
full_price_details: ParserTypeCurrency
# Input data
data = {
"numeric_price": "$19.99",
"full_price_details": "USD 19.99",
}
# Parse the data
price_info = CombinedModel(**data)
print(price_info.numeric_price) # Output: 19.99
print(price_info.full_price_details) # Output: {'currency': 'USD', 'currency_symbol': '$', 'amount': 19.99}
E-Commerce Data Processing
Ideal for processing pricing data from product listings.
from pydantic import BaseModel
from price_parser import ParserTypeCurrency
class ProductModel(BaseModel):
price: ParserTypeCurrency
def parse_and_display_products(products):
"""
Parses a list of product prices using a Pydantic model and displays the extracted information.
Args:
products (list): A list of price strings to be parsed.
"""
for product in products:
try:
product_data = ProductModel(price=product)
info = product_data.price
print(
f"Price: {info['amount']}, Currency: {info['currency']}, Symbol: {info['currency_symbol']}"
)
except ValueError as e:
print(f"Error parsing product price '{product}': {e}")
products = ["$19.99", "€15.50", "₹1200"]
parse_and_display_products(products)
Tests
Run unit tests to verify functionality:
pytest
Contributing
Contributions are welcome! Feel free to open issues or submit pull requests to improve the package.
License
This project is licensed under the MIT License - see the LICENSE file for details.
Running the Package
You can use the library directly in your Python projects. For development, clone the repository and use Poetry to manage dependencies:
git clone https://github.com/mohamedmamdouh22/price-parser.git
cd price-parser
poetry install
Happy Parsing! 💰
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
File details
Details for the file price_parser_reworkd-0.1.2.tar.gz
.
File metadata
- Download URL: price_parser_reworkd-0.1.2.tar.gz
- Upload date:
- Size: 6.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.0.1 CPython/3.11.5
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9af7072d2d749caef26b0891c9703cd81bcda916f97c2d89872f0ec70509057b |
|
MD5 | 632cd717048a01d95e14852c277998cf |
|
BLAKE2b-256 | c35ca725a4b58dbdd173613f8f1495161b2b58db21f357ce159fa6e0076d1c69 |
File details
Details for the file price_parser_reworkd-0.1.2-py3-none-any.whl
.
File metadata
- Download URL: price_parser_reworkd-0.1.2-py3-none-any.whl
- Upload date:
- Size: 6.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.0.1 CPython/3.11.5
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | f289d5125f856de03a07b6c1d50be486b16da2397a1b2efc90fcddd98eb8d1ca |
|
MD5 | 55e47b193a5de6332b96bce7dd998383 |
|
BLAKE2b-256 | abb8c30c89943c3de4ae089e07f06cc161072caef67a478f666066c4b2be8caf |