Ответ 1
Флэтленд делает это хорошо. http://discorporate.us/projects/flatland/
Существуют ли библиотеки преобразования автономного типа?
У меня есть система хранения данных, которая понимает только байты/строки, но я могу пометить метаданные, такие как тип, который нужно преобразовать.
Я мог взломать некоторую наивную систему преобразователей типов, как это делало перед собой все другие приложения, или я мог бы надеяться использовать автономную библиотеку, за исключением того, что не могу ее найти. Нечетный для такой общей деятельности.
Чтобы уточнить, у меня будет что-то вроде:
('123', 'integer'), и я хочу выйти 123
Флэтленд делает это хорошо. http://discorporate.us/projects/flatland/
У вас есть два варианта: используйте struct или pickle.
С 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
с различными форматами.