使用制表符缩进的YAML配置

时间:2019-03-14 11:10:54

标签: python yaml

我正在编写一个单元测试,并且发现了一个使用制表符缩进来编写YAML配置的工具,但是当我尝试使用GraphDBL.Config = Configuration.GetSection("neo4j").Get<Config>(options => options.BindNonPublicProperties = true); 来读取它时,出现了一条错误消息:

yaml.load(file_object)

或使用我在终端中看到的工具:

(<unknown>): found character that cannot start any token while scanning for the next token at line 2 column 1

1 个答案:

答案 0 :(得分:0)

尽管制表符在YAML中有效,但不能在 缩进,当前版本都不 (Messages and Message Queues, 较旧的1.2,或 1.1

并不意味着制表符不能在行首出现,如下所示 示例显示

import sys
import ruamel.yaml

yaml_str = """\
'xxx
\tyyy'
"""

yaml = ruamel.yaml.YAML()
yaml.explicit_start = True
data = yaml.load(yaml_str)
print(data)

运行无错误,并给出:

xxx yyy

如果您从yaml_str中删除单引号,则将 得到您得到的错误(在第2行,第1列),因为解析器 必须考虑yyy是否启动新令牌(在扫描单个令牌时 引用标量,但不会这样做。

在没有看到实际的YAML的情况下,很难确切地说,但是 probalby是你的工具。您可能会替换掉 标签:

with open('yourfile.yaml') as fp:
    data = yaml.load(fp.read().replace('\t', ' '))