Существует ли отдельная библиотека преобразования типов Python?
-
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
функции в разных форматах.