gpt4 book ai didi

python - 字符串中 "!"上的 pyYAML 错误

转载 作者:太空狗 更新时间:2023-10-29 17:42:28 30 4
gpt4 key购买 nike

首先,免责声明:我对 YAML 不太熟悉。我正在尝试将 YAML 文档解析为键值对(不要担心我是怎么做的。我已经处理好了)

我的文件以前看起来像这样:

world:
people:
name:Suzy
address:chez-bob

然后,有人去改了。

world:
people:
name:!$uzy
address:chez-bob

我得到这个解析错误:

yaml.constructor.ConstructorError: could not determine a constructor for the tag '!$uzy'

这到底是什么意思?我将如何让它只将 !$ 解释为两个字符?我只想要一个字符串键和值的字典!此外,编辑 yaml 文件不是一种选择。必须使用解析器修复代码中的问题。

最佳答案

感叹号是 YAML 标签的前缀。解析器必须通过标记名称为其实现一个构造函数。有一些默认标签,如 !!bool!!int 等,甚至还有一些 Python 特定标签,如 !!python/tuple

您可以定义自己的构造函数,甚至可以为前缀捕获的多个标签定义构造函数。通过为 '' 定义前缀,您可以捕获所有标签并忽略它们。您可以从构造函数返回标签及其值,将其全部视为文本。

>>> import yaml
>>> def default_ctor(loader, tag_suffix, node):
... print loader
... print tag_suffix
... print node
... return tag_suffix + ' ' + node.value
...
>>> yaml.add_multi_constructor('', default_ctor)
>>> yaml.load(y)
<yaml.loader.Loader object at 0xb76ce8ec>
!$uzy
ScalarNode(tag=u'!$uzy', value=u'')
{'world': {'people': {'name': '!$uzy', 'address': 'chez-bob'}}}
>>>

关于python - 字符串中 "!"上的 pyYAML 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13280978/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com