我正在编写一个单元测试,并且发现了一个使用制表符缩进来编写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
答案 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', ' '))