PyYAML 외에도 정확히 unicode
/str
을 처리하는 안전한 Python 데이터 직렬화 라이브러리가 있습니까?str/유니 코드를 올바르게 처리하는 파이썬 저장 직렬화?
: 나는 (밖으로 너무 pickle
및 marshel
)에 시리얼이 안전되고 싶어하고, PyYAML는 옵션입니다,하지만 난 YAML의 복잡성을 싫어하는
>>> json.loads(json.dumps([u"x", "x"]))
[u'x', u'x'] # Both unicode
>>> msgpack.loads(msgpack.dumps([u"x", "x"]))
['x', 'x'] # Neither are unicode
>>> bson.loads(bson.dumps({"x": [u"x", "x"]}))
{u'x': [u'x', 'x']} # Dict keys become unicode
>>> pyamf.decode(pyamf.encode([u"x", "x"])).next()
[u'x', u'x'] # Both are unicode
주, 그래서 다른 옵션이 있는지 알고 싶습니다.
편집 : 내 데이터의 특성에 약간의 혼란이있는 것으로 보입니다. 그들 중 일부는 유니 코드 (예, 이름)이고 일부는 바이너리 (예 : 이미지)입니다. 따라서 unicode
과 str
을 혼동하는 직렬화 라이브러리는 "42"
과 42
을 혼동하는 라이브러리와 마찬가지로 저에게 쓸모가 없습니다.
In [7]: ast.literal_eval (repr({"d": ["x", u"x"]}))
Out[7]: {'d': ['x', u'x']}
정보가 정보에서 '유니 코드'또는 '바이트'인지 확인해야합니까? 로드를 수행하는 메소드에서 처리 할 수 없습니까? – agf
네, 꽤 확신합니다 ... 두 가지 이유가 있습니다. 먼저 파이썬 2.6은'unicode'가 함수에 대한 키워드 인수로 사용되면 폭발합니다 (예 :'foo (** {u "bar": 42})). 두 번째로 나는'유니 코드 '데이터를 다루고 있습니다. 그리고 몇몇'bytes' 데이터를 가지고 있고, 직렬화 라이브러리가 나를 추적 할 수 있다면 * 아주 * 좋을 것입니다. –