让
d = {3: u'blah', u'b': u'foo', (12,2,3) : u'bonjour'}
是一本字典。如果我使用
g = yaml.dump(d)
h = yaml.load(g)
print g, h
非常好,但我到处都有很多!!python/unicode
,所以这对可读性不好。
另一方面,如果我使用:
g = yaml.safe_dump(d)
h = yaml.load(g)
print g, h
不再有!!python/unicode
,也不再是!!python/tuple
,因此 load
不起作用,因为无法正确理解元组。
如何与YAML取得适当的平衡?
!!python/unicode
无处不在,!!python/typle
)答案 0 :(得分:1)
如果您搜索python yaml unicode,则第一个结果是this bug report,它具有您正在寻找的解决方案。简而言之,为unicode字符串注册自定义代表,如下所示:
yaml.add_representer(unicode,
lambda dumper, value: dumper.represent_scalar(u'tag:yaml.org,2002:str', value))
有了这个,你的例子就像这样呈现:
>>> d = {3: u'blah', u'b': u'foo', (12,2,3) : u'bonjour'}
>>> print yaml.dump(d)
3: blah
? !!python/tuple [12, 2, 3]
: bonjour
b: foo