In my application I have generated a number of values (three columns, of type int, str and datetime, see example below) and these values are stored in a flat file as comma-separated strings. Furthermore, I store a file containing the type of the values (see below). Now, how can I use this information to cast my values from the flat file to the correct data type in Python? Is is possible or do I need to do some other stuff?
Data file:
#id,value,date
1,a,2011-09-13 15:00:00
2,b,2011-09-13 15:10:00
3,c,2011-09-13 15:20:00
4,d,2011-09-13 15:30:00
Type file:
id,<type 'int'>
value,<type 'str'>
date,<type 'datetime.datetime'>
As I understand, you already parsed the file, you now just need to get the right type. So let's say id_
, type_
and value
are three strings that contain the values in the file. (Note, type_
should contain 'int'
— for example —, not '<type 'int'>'
.
def convert(value, type_):
import importlib
try:
# Check if it's a builtin type
module = importlib.import_module('__builtin__')
cls = getattr(module, type_)
except AttributeError:
# if not, separate module and class
module, type_ = type_.rsplit(".", 1)
module = importlib.import_module(module)
cls = getattr(module, type_)
return cls(value)
Then you can use it like..:
value = convert("5", "int")
Unfortunately for datetime this doesnt work though, as it can not be simply initialized by its string representation.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With