¿Existe una biblioteca de conversión de tipo Python independiente?
-
19-08-2019 - |
Pregunta
¿Hay alguna biblioteca de conversión de tipo independiente?
Tengo un sistema de almacenamiento de datos que solo comprende bytes / cadenas, pero puedo etiquetar metadatos como el tipo al que se va a convertir.
Podría piratear algún ingenuo sistema de convertidores de tipos, como cualquier otra aplicación lo ha hecho antes que yo, o espero poder usar una biblioteca independiente, excepto que no puedo encontrar una. Extraño para una actividad tan común.
Solo para aclarar, tendré algo como:
('123', 'integer') y quiero salir 123
Solución 3
Flatland hace esto bien. http://discorporate.us/projects/flatland/
Otros consejos
Tiene dos opciones: use struct o pickle módulos.
Con struct, especifica un formato y compacta sus datos a una matriz de bytes. Esto es útil para trabajar con estructuras C o escribir en aplicaciones en red que requieren un protocolo binario.
pickle puede serializar y deserializar automáticamente estructuras complejas de Python en una cadena. Hay algunas advertencias, por lo que es mejor leer la documentación . Creo que esta es probablemente la biblioteca que desea.
>>> 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}
Considera esto.
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)
¿Es una biblioteca independiente suficientemente buena para una actividad tan común? ¿Sería suficiente una biblioteca bien probada y resistente a errores? ¿O hay algo más que se requiere?
Si necesita más o diferentes conversiones de fecha / hora, simplemente agregue nuevas funciones toDate
con diferentes formatos.