ruamel解析器读取特殊字符时出错

时间:2018-03-28 10:17:02

标签: ruamel.yaml

我使用的是ruamel.yaml(0.15.37),其数据结构如下:

- !Message
  Name:  my message
  Messages:
  - !Message
    name: InputMsg1
    - !Variable
          Name: control_word
          Length: 8
          Type: Signed
          Unit:  %  # ruamel parser erro

如果我读了YAML文件,我会收到错误

  

文件“_ruamel_yaml.pyx”,第904行,in   _ruamel_yaml.CParser._parse_next_event(ext / _ruamel_yaml.c:12818)ruamel.yaml.scanner.ScannerError:扫描下一个令牌时   找到无法启动任何令牌的字符

如果我从任何其他角色开始,则不会产生任何错误。

- !Message
  Name:  my message
  Messages:
  - !Message
    name: InputMsg1
    - !Variable
          Name: control_word
          Length: 8
          Type: Signed
          Unit:  a %  # no parser erro

我也试过%

1 个答案:

答案 0 :(得分:0)

百分号是indicator character,那些无法启动普通标量。所以你必须引用百分号:

         Unit:  "%"

         Unit:  '%'

(你也可以把它作为一个文字块标量:

         Unit:  |
           %

或折叠标量,但我认为这不是更好的可读性。)

由于&也是一个指针字符,它会抛出相同的错误,但你似乎(错误地)假设你可以在YAML中进行HTML转义(你不能)。