Existe-t-il une bibliothèque de conversion de type Python autonome?
-
19-08-2019 - |
Question
Existe-t-il des bibliothèques de conversion de type autonomes?
J'ai un système de stockage de données qui ne comprend que les octets / chaînes, mais je peux baliser des métadonnées telles que le type à convertir.
Je pourrais pirater un système naïf de convertisseurs de type, comme toutes les autres applications l'ont fait avant moi, ou utiliser une bibliothèque autonome, à moins que je ne puisse en trouver une. Bizarre pour une telle activité commune.
Juste pour clarifier, je vais avoir quelque chose comme:
('123', 'entier') et je veux sortir 123
La solution 3
Flatland le fait bien. http://discorporate.us/projects/flatland/
Autres conseils
Vous avez deux options: utilisez la struct . ou pickle modules.
Avec struct, vous spécifiez un format et compacte vos données en un tableau d'octets. Ceci est utile pour travailler avec des structures C ou écrire dans des applications en réseau nécessitant un protocole binaire.
pickle peut sérialiser et désérialiser automatiquement les structures Python complexes en chaîne. Il est préférable de lire la documentation . Je pense que c'est la bibliothèque la plus probable que vous voulez.
>>> 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}
Considérez ceci.
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)
Est-ce une bibliothèque autonome suffisante pour une activité aussi commune? Cela suffirait-il d'une bibliothèque bien testée et résistant aux erreurs? Ou y a-t-il autre chose qui est requis?
Si vous avez besoin de plus ou de différentes conversions date / heure, vous ajoutez simplement de nouvelles fonctions toDate
avec des formats différents.