我正在使用来自http://pyyaml.org的 YAML 解析器,我希望它始终将某些字段解释为字符串,但我无法弄清楚 add_path_resolver() 是如何工作的。
例如:解析器假定“版本”是一个浮点数:
network:
- name: apple
- name: orange
version: 2.3
site: banana
某些文件具有“版本:2”(被解释为 int)或“版本:2.3 alpha”(被解释为 str)。
我希望它们始终被解释为 str。
似乎 yaml.add_path_resolver() 应该让我指定,“当你看到版本时:,总是将它解释为一个 str)但它没有很好地记录。我最好的猜测是:
yaml.add_path_resolver(u'!root', ['version'], kind=str)
但这不起作用。
关于如何让我的版本字段始终为字符串的建议?
PS 以下是一些不同“版本”字符串的示例以及它们的解释方式:
(Pdb) import yaml
(Pdb) import pprint
(Pdb) pprint.pprint(yaml.load("---\nnetwork:\n- name: apple\n- name: orange\nversion: 2\nsite: banana"))
{'network': [{'name': 'apple'}, {'name': 'orange'}],
'site': 'banana',
'version': 2}
(Pdb) pprint.pprint(yaml.load("---\nnetwork:\n- name: apple\n- name: orange\nversion: 2.3\nsite: banana"))
{'network': [{'name': 'apple'}, {'name': 'orange'}],
'site': 'banana',
'version': 2.2999999999999998}
(Pdb) pprint.pprint(yaml.load("---\nnetwork:\n- name: apple\n- name: orange\nversion: 2.3 alpha\nsite: banana"))
{'network': [{'name': 'apple'}, {'name': 'orange'}],
'site': 'banana',
'version': '2.3 alpha'}