我很难过。这就是我想要将我的文档构建为:
release: JULY
files:
# files
/foo/config.py: 1.6
/bar/dao.py: 1.19
然后我想根据python中给出的版本返回文件。这部分很容易,但是它将值作为浮点数返回,这会带来问题。我想在没有预处理的情况下将它们强制转换为字符串。 (我不想打开文件,遍历版本,并在每个条目前加上!! python / str)
我认为标签是这样做的方式,但我无法根据我在何处/何处定义标签来制作文档的正面或反面。
任何指针?
答案 0 :(得分:0)
如果要将float
值转储为字符串,则不需要指定字符串的类型,只需先在其上调用str()
:
>>> d = {'release': 'JULY', 'files': {'/path/file': str(1.6), '/path/file2': str(1.9)}}
>>> print yaml.dump(d, default_flow_style=False)
files:
/path/file: '1.6'
/path/file2: '1.9'
release: JULY
如果要序列化/反序列化自定义对象,只需在类中定义__repr__
,即可在某种程度上执行此操作:
class Foo:
def __init__(self, x):
self.x = x
def __repr__(self):
return "%s(%r)" % (self.__class__.__name__, self.x)
>>> f = Foo(0)
>>> foo = yaml.dump(f)
>>> yaml.load(foo)
<<< Foo(0)
答案 1 :(得分:0)
看起来你想要做的是子类Loader
并调用add_path_resolver
,如下所示:
class MyLoader(yaml.Loader):
pass
MyLoader.add_path_resolver(SOME_TAG, SOME_PATH, str)
f = open('foo.yaml')
the_data = yaml.load(f, Loader=MyLoader)
但是我找不到关于add_path_resolver
的任何文档以及SOME_TAG
和SOME_PATH
应该是什么。