【发布时间】:2020-05-30 01:16:01
【问题描述】:
yaml.load 在“:”之后都需要空格来识别正确的键。如果它没有找到空间,它将使用整个键值对作为键,然后将 None 作为值。
见下文:OP print has 'B2_key:B2_VAL': None
test_item = "A1: {B1_key: b1_val, B2_key:B2_VAL}"
yaml_iterator = yaml.load_all(test_item, Loader=yaml.Loader)
op = {}
for item in yaml_iterator:
op.update(item)
print(op)
Output print: {'A1': {'B1_key': 'b1_val', 'B2_key:B2_VAL': None}}
我知道我们只能拥有正确格式的 IP 文件。但是我们有办法处理它吗?我希望用户不关心空间。
一种方法是检查 OP 字典并在那里处理它。
请建议处理此问题的最佳方法。提前致谢。
【问题讨论】:
-
我希望用户不要关心空格。然后选择基于缩进的格式是一个非常糟糕的主意。正如您在对答案的评论中所说的那样,如果您放弃以下空格要求,您将无法知道用户是否打算将
:用作值分隔符或内容的一部分。这正是 YAML 需要空间的原因。如果你知道自己无法区分,你期待什么样的答案?