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

Was it helpful?

Solution 3

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.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top