Pergunta

Existem bibliotecas de conversão do tipo independente?

Eu tenho um sistema de armazenamento de dados que entende apenas bytes/strings, mas posso marcar metadados como o tipo a ser convertido.

Eu poderia invadir algum sistema ingênuo de conversores de tipo, como todos os outros aplicativos foram feitos antes de mim, ou espero usar uma biblioteca independente, exceto que não consigo encontrar uma. Ímpar para uma atividade tão comum.

Só para esclarecer, terei algo como:

('123', 'Integer') e eu quero sair 123

Foi útil?

Solução 3

Outras dicas

Você tem duas opções, ou use o estrutura ou salmoura módulos.

Com a Struct, você especifica um formato e compacta seus dados para a matriz de bytes. Isso é útil para trabalhar com estruturas C ou escrita em aplicativos em rede que exigem são protocolo binário.

O picles pode serializar automaticamente e desserializar estruturas de python complexas em uma corda. Existem algumas advertências, então é melhor ler o documentação. Eu acho que esta é a biblioteca que você deseja.

>>> 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}

Considere isto.

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)

Essa é uma biblioteca independente o suficiente para uma atividade tão comum? Isso seria suficiente de uma biblioteca bem testada e resiliente de erros? Ou há algo mais necessário?

Se você precisar de mais ou diferentes conversões de data/hora, basta adicionar novo toDate funções com diferentes formatos.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top