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

Était-ce utile?

La solution 3

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top