6.9. Price¶
6.9.1. PriceFloat¶
-
class
easydata.parsers.price.
PriceFloat
(*args, currency_hint: Optional[str] = None, decimal_separator: Optional[str] = None, **kwargs)[source]¶ Bases:
easydata.parsers.price.BasePriceFloat
PriceFloat
parser will try to extract prices from a str
, int
or
float
type values and return them as float
type. It supports price
extraction from various types.
PriceFloat
parser is based upon Text
parser and therefore inherits all
parameters from it and it’s usage.
To read docs regarding other parameters than the one described here, please go to Text documentation.
Getting Started¶
Lets import first easydata
module.
>>> import easydata as ed
PriceFloat
supports any query object for fetching data.
>>> test_dict = {'price': 'Was 99.9€'}
>>> ed.PriceFloat(ed.jp('price')).parse(test_dict)
99.9
Another example with a float
data source.
>>> test_dict = {'price': 3330.90}
>>> ed.PriceFloat(ed.jp('price')).parse(test_dict)
3330.9
Parameters¶
-
decimals
¶
We can manipulate how many decimals
parsed value will be have. By default
this limit is 2
, but we can change this value with a decimals
parameter.
In this example lets set our value output to 3 decimals.
>>> test_dict = {'price': '999.91264'}
>>> ed.PriceFloat(ed.jp('price'), decimals=3).transform(test_dict)
999.913
Now lets set it to 0 decimals.
>>> test_dict = {'price': '999.91264'}
>>> ed.PriceFloat(ed.jp('price'), decimals=0).parse(test_dict)
1000
We can completely disable number rounding to decimals by settings
In this example lets set our value output to 3 decimals.
>>> test_dict = {'price': '999.91264'}
>>> ed.PriceFloat(ed.jp('price'), decimals=3).transform(test_dict)
999.913
Now lets set it to 0 decimals.
>>> test_dict = {'price': '999.91264'}
>>> ed.PriceFloat(ed.jp('price'), decimals=0).parse(test_dict)
1000
We can completely disable number rounding to decimals by settings
In this example lets set our value output to 3 decimals.
>>> test_dict = {'price': '999.91264'}
>>> ed.PriceFloat(ed.jp('price'), decimals=3).parse(test_dict)
999.913
Now lets set it to 0 decimals.
>>> test_dict = {'price': '999.91264'}
>>> ed.PriceFloat(ed.jp('price'), decimals=0).transform(test_dict)
1000
We can completely disable number rounding to decimals by settings
In this example lets set our value output to 3 decimals.
>>> test_dict = {'price': '999.91264'}
>>> ed.PriceFloat(ed.jp('price'), decimals=3).parse(test_dict)
999.913
Now lets set it to 0 decimals.
>>> test_dict = {'price': '999.91264'}
>>> ed.PriceFloat(ed.jp('price'), decimals=0).transform(test_dict)
1000
We can completely disable number rounding to decimals by settings
In this example lets set our value output to 3 decimals.
>>> test_dict = {'price': '999.91264'}
>>> ed.PriceFloat(ed.jp('price'), decimals=3).parse(test_dict)
999.913
Now lets set it to 0 decimals.
>>> test_dict = {'price': '999.91264'}
>>> ed.PriceFloat(ed.jp('price'), decimals=0).parse(test_dict)
1000
We can completely disable number rounding to decimals by settings
decimals
parameter to None
.
>>> test_text = '999.91264'
>>> ed.PriceFloat(decimals=None).transform(test_text)
999.91264
>>> test_text = '999.91264'
>>> ed.PriceFloat(decimals=None).transform(test_text)
999.91264
>>> test_text = '999.91264'
>>> ed.PriceFloat(decimals=None).parse(test_text)
999.91264
Note
Default value of decimals parameter can be defined through a config variable ED_PRICE_DECIMALS in a config file or a model.
-
decimals
¶
-
min_value
¶
-
max_value
¶
-
normalize
¶
-
currency_hint
¶
-
decimal_separator
¶
6.9.2. PriceInt¶
-
class
easydata.parsers.price.
PriceInt
(*args, currency_hint: Optional[str] = None, decimal_separator: Optional[str] = None, **kwargs)[source]¶
PriceInt
works exactly the same as PriceFloat
but returns int
type
instead float
.
Getting Started¶
Lets import first easydata
module.
>>> import easydata as ed
PriceInt
supports any query object for fetching data.
>>> test_dict = {'price': 'Was 99.9€'}
>>> ed.PriceInt(ed.jp('price')).parse(test_dict)
99
Another example with a float
data source.
>>> test_dict = {'price': 3330.90}
>>> ed.PriceInt(ed.jp('price')).parse(test_dict)
3330
6.9.3. PriceText¶
-
class
easydata.parsers.price.
PriceText
(*args, currency_hint: Optional[str] = None, decimal_separator: Optional[str] = None, **kwargs)[source]¶
PriceText
works exactly the same as PriceFloat
but returns str
type
instead float
.
Getting Started¶
Lets import easydata
module.
>>> import easydata as ed
PriceText
supports any query object for fetching data.
>>> test_dict = {'price': 'Was 99.9€'}
>>> ed.PriceText(ed.jp('price')).parse(test_dict)
'99.9'
Another example with decimal limit.
>>> test_dict = {'price': 'Was 3.330,9246'}
>>> ed.PriceText(ed.jp('price'), decimals=3).parse(test_dict)
'3330.925'