Domanda

Esistono librerie di conversione di tipo standalone?

Ho un sistema di archiviazione dati che comprende solo byte / stringhe, ma posso taggare metadati come il tipo in cui convertire.

Potrei hackerare un sistema ingenuo di convertitori di tipi, come ogni altra applicazione ha già fatto prima di me, o spero di poter usare una libreria autonoma, tranne che non riesco a trovarne uno. Strano per un'attività così comune.

Giusto per chiarire, avrò qualcosa del tipo:

('123', 'intero') e voglio uscirne 123

È stato utile?

Soluzione 3

Altri suggerimenti

Hai due opzioni, o usa struct o pickle moduli.

Con struct specifichi un formato e compatta i tuoi dati in array di byte. Ciò è utile per lavorare con strutture C o scrivere su app in rete che richiedono un protocollo binario.

pickle può serializzare e deserializzare automaticamente strutture Python complesse su una stringa. Ci sono alcuni avvertimenti, quindi è meglio leggere la documentazione . Penso che questa sia probabilmente la libreria che desideri.

>>> 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 questo.

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)

È una libreria autonoma abbastanza buona per un'attività così comune? Sarebbe sufficiente una libreria ben collaudata e resistente agli errori? O c'è qualcosa di più che è richiesto?

Se hai bisogno di più o diverse conversioni di data / ora, aggiungi semplicemente nuove funzioni toDate con formati diversi.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top