首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >YAML如何解读特殊字符

YAML如何解读特殊字符
EN

Stack Overflow用户
提问于 2016-05-03 22:47:27
回答 2查看 30.5K关注 0票数 5

因此,我试图用YAML编写一个插件配置文件,但是我的解析器抛出了错误,尽管所有的内容似乎都是正确格式化的。YAML网站没有多大帮助,我在docs.ansible.com/ansible/YAMLSyntax.html上找到了任何类型的教程。由于我可能因为普遍缺乏YAML语法知识而忽略了语法中一些愚蠢的东西,那么每个YAML特殊字符都做些什么呢?

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

代码语言:javascript
复制
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
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-05-04 08:55:37

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

代码语言:javascript
复制
EnforcedWorlds:|

整条线是一个字符串。您希望它是一个映射键(EnforcedWorlds),然后是块标量(|)的头。要使此操作正常,必须在冒号后面添加一个空格:

代码语言:javascript
复制
EnforcedWorlds: |

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

代码语言:javascript
复制
EnforcedWorlds:
  - World
  - Nether
  - DIM-1
  - End
  - DIM1

在这里,该值将被解析为标量项的序列。

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

  • http://ben-kiki.org/ypaste/ (YAML 1.2引用解析器)
  • http://yaml-online-parser.appspot.com/ (PyYAML)
  • http://flyx.github.io/NimYAML/testing.html (NimYAML)

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

票数 3
EN

Stack Overflow用户

发布于 2016-05-03 22:51:04

YAML不需要引用大多数字符串,但是如果特殊字符属于特定的字符列表,则需要引用它们。如果您的值包含以下任何特殊字符:{}[]&*#?|-<>=!%@:d17和,

票数 17
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37015652

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档