1

我正在使用 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.CParser._parse_next_event (ext/_ruamel_yaml.c:12818) 中的文件“_ruamel_yaml.pyx”,第 904 行 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

我也试过%

4

1 回答 1

0

百分号是指示符,不能以纯标量开头。所以你必须引用百分号:

         Unit:  "%"

或者

         Unit:  '%'

(您也可以将其设为文字块标量:

         Unit:  |
           %

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

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

于 2018-03-28T16:39:50.290 回答