yaml.load all要求在“:”后面有空格以识别正确的密钥。如果找不到空格,它将使用整个键值对作为键,然后将None作为值。
请参见下文:OP打印具有'B2_key:B2_VAL':无
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 syntax明确声明必须在冒号后跟一个空格。因此,您有两个选择:
转到选项1。
如果您确实不希望用户关心语法,并且字符串中包含yaml,则可以在分号后添加空格:
test_item = test_item.replace(':', ': ')
输出:
{'A1': {'B1_key': 'b1_val', 'B2_key': 'B2_VAL'}}
但是这仅在键和值中不允许使用分号时才有效。