Is there a standalone Python type conversion library?
-
19-08-2019 - |
Question
Are there any standalone type conversion libraries?
I have a data storage system that only understands bytes/strings, but I can tag metadata such as the type to be converted to.
I could hack up some naive system of type converters, as every other application has done before me, or I could hopefully use a standalone library, except I can't find one. Odd for such a common activity.
Just to clarify, I will have something like:
('123', 'integer') and I want to get out 123
Solution 3
Flatland does this well. http://discorporate.us/projects/flatland/
OTHER TIPS
You've got two options, either use the struct or pickle modules.
With struct you specify a format and it compacts your data to byte array. This is useful for working with C structures or writing to networked apps that require are binary protocol.
pickle can automatically serialise and deserialise complex Python structures to a string. There are some caveats so it's best read the documentation. I think this is the most likely the library you want.
>>> import pickle >>> v = pickle.dumps(123) >>> v 'I123\n.' >>> pickle.loads(v) 123 >>> v = pickle.dumps({"abc": 123}) >>> v "(dp0\nS'abc'\np1\nI123\ns." >>> pickle.loads(v) {'abc': 123}
Consider this.
import datetime
def toDate( someString ):
return datetime.datetime.strptime( someString, "%x" ).date()
typeConversionMapping = { 'integer': int, 'string': str, 'float': float, 'date': toDate }
def typeConversionFunction( typeConversionTuple ):
theStringRepresentation, theTypeName = typeConversionTuple
return typeConversionMapping[theTypeName](theStringRepresentation)
Is that a good enough standalone library for such a common activity? Would that be enough of a well-tested, error-resilient library? Or is there something more that's required?
If you need more or different date/time conversions, you simply add new toDate
functions with different formats.