Parsing YAML如何解释特殊字符

Parsing YAML如何解释特殊字符,parsing,syntax,yaml,Parsing,Syntax,Yaml,所以,我试图用YAML编写一个插件配置文件,但我的解析器抛出了错误,尽管所有内容的格式似乎都正确。YAML网站没有什么帮助,我发现的唯一一个教程是docs.ansible.com/ansible/YAMLSyntax.html上的零散教程。由于缺乏YAML语法知识,我可能在语法中遗漏了一些愚蠢的东西,每个YAML特殊字符都做什么 以下是我行为不端的YAML文件供参考: EnforcedWorlds:| - World - Nether - DIM-1 - End - DIM1

所以,我试图用YAML编写一个插件配置文件,但我的解析器抛出了错误,尽管所有内容的格式似乎都正确。YAML网站没有什么帮助,我发现的唯一一个教程是docs.ansible.com/ansible/YAMLSyntax.html上的零散教程。由于缺乏YAML语法知识,我可能在语法中遗漏了一些愚蠢的东西,每个YAML特殊字符都做什么

以下是我行为不端的YAML文件供参考:

EnforcedWorlds:|
  - World
  - Nether
  - DIM-1
  - End
  - DIM1
Ignore List:|
  - CuckooClock5000
  - Venomous Potato
  - Subtle Snail
Radius: 10
DisallowInRadius:|
  - Sandstone => "Darude Sandstone!"
  - Quarry (1040) => "This block is too L33T 4U 2 Use here :)"
  - Minium Stone (20102 with datavalues 1 to 1520) => "Minimum Minium area!"
Command Output groups:
  Mod:|
    - Perm Node: gpu.mod
    - (Light Green) $(Banner)
    - (Teal) Command A
    - (Pink) Command B
  Admin:|
    - Perm Node: gpu.admin
    - (Light Red) $(Banner)
    - Mod lines 2-3
    - (Blue) Command C
    - (Bold)
  Owner:|
    - Mod lines 1-3
    - Admin line 2

YAML不需要引用大多数字符串,但如果特殊字符在特定的字符列表中,则需要引用它们。如果您的值包含以下任何特殊字符(例如:,{,},[,],&,*,#,?,|,-,=,!,%,@),请使用引号。

YAML语法无效不是因为字符,而是因为缺少空格:

EnforcedWorlds:|
这整行是一条线。您希望它是一个映射键(
EnforcedWorlds
),后跟块标量的头(
|
)。要使其工作,必须在冒号后添加空格:

EnforcedWorlds: |
但我不确定这是否真的是你想要的。它将以下所有缩进更多的行解析为文字字符串(保留换行符)。但是内容看起来像YAML序列,所以您可能希望这样编写:

EnforcedWorlds:
  - World
  - Nether
  - DIM-1
  - End
  - DIM1
这里,值将被解析为标量项序列

要查看如何解析输入,可以使用一些web服务:

  • (YAML 1.2参考解析器)
  • (皮亚马尔)
  • (尼米亚姆)

还有一个交互式YAML shell,用于使用Perl进行测试。

请注意,PyYAML在线解析器是PyYAML 1.1