Существует ли отдельная библиотека преобразования типов Python?

StackOverflow https://stackoverflow.com/questions/468639

  •  19-08-2019
  •  | 
  •  

Вопрос

Существуют ли какие-либо автономные библиотеки преобразования типов?

У меня есть система хранения данных, которая понимает только байты / строки, но я могу пометить метаданные, такие как тип для преобразования.

Я мог бы взломать какую-нибудь наивную систему преобразователей типов, как и любое другое приложение, сделанное до меня, или, я надеюсь, использовать автономную библиотеку, за исключением того, что я не могу ее найти. Странно для такой общей деятельности.

Просто чтобы уточнить, у меня будет что-то вроде:

('123', 'integer'), и я хочу получить 123

Это было полезно?

Решение 3

Flatland делает это хорошо. http://discorporate.us/projects/flatland/

Другие советы

У вас есть два варианта, либо используйте struct или рассол модулей.

С помощью struct вы указываете формат, и он уплотняет ваши данные в байтовый массив. Это полезно для работы со структурами C или записи в сетевые приложения, для которых требуется двоичный протокол.

pickle может автоматически сериализовать и десериализовать сложные структуры Python в строку. Есть некоторые предостережения, поэтому лучше прочитать документацию . Я думаю, что это наиболее вероятная библиотека, которую вы хотите.

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

Учтите это.

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)

Это достаточно хорошая автономная библиотека для такой обычной деятельности? Будет ли этого достаточно для хорошо протестированной, устойчивой к ошибкам библиотеки? Или требуется что-то еще?

Если вам нужно больше или разные преобразования даты / времени, просто добавьте новые toDate функции в разных форматах.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top