YAML缩进和分离

2019-04-25 23:51|来源: 网路

当学习任何编程语言时,缩进和分离是两个主要概念。本章详细讨论了与YAML相关的这两个概念。

YAML的缩进

YAML不包括任何强制性空格。此外,没有必要保持一致。有效的YAML缩进如下所示 -

a:
   b:
      - c
      -  d
      - e
f:
      "ghi"

  • 在YAML中使用缩进时,应该记住以下规则:流块必须至少包含一些具有周围当前块级别的空格。

  • YAML的流含量跨越多条线。流内容以{[开头。

  • 阻止列表项包括与周围块级相同的缩进,因为 -符号被视为缩进的一部分。


预期块的示例
请注意以下代码,其中显示了缩进示例 -

--- !clarkevans.com/^invoice
invoice: 34843
date   : 2001-01-23
bill-to: &id001
   given  : Chris
   family : Dumars
   address:
      lines: |
            458 Walkman Dr.
            Suite #292
      city    : Royal Oak
      state   : MI
      postal  : 48046
ship-to: *id001
product:
    - sku         : BL394D
      quantity    : 4
      description : Basketball
      price       : 450.00
   - sku         : BL4438H
      quantity    : 1
      description : Super Hoop
      price       : 2392.00
tax  : 251.42
total: 4443.52
comments: >
    Late afternoon is best.
    Backup contact is Nancy
    Billsmer @ 338-4338.

分离字符串

字符串使用双引号字符串分隔。如果转义给定字符串中的换行符,则会将其完全删除并转换为空格值。

示例
在这个例子中,将动物列表列为数据类型为string的数组结构。列出的每个新元素都带有连字符前缀,如前缀所述。

-
 - Cat
 - Dog
 - Goldfish
-
 - Python
 - Lion
 - Tiger

另一个解释YAML中字符串表示的例子如下所述。

 errors:
      messages:
         already_confirmed: "was already confirmed, please try signing in"
         confirmation_period_expired: "needs to be confirmed within %{period}, please request a new one"
         expired: "has expired, please request a new one"
         not_found: "not found"
         not_locked: "was not locked"
         not_saved:
            one: "1 error prohibited this %{resource} from being saved:"
            other: "%{count} errors prohibited this %{resource} from being saved:"

此示例引用了一组错误消息,用户只需提及关键方面并相应地获取值即可使用。 这种YAML模式遵循JSON的结构,YAML的新用户可以理解。

相关问答

更多
  • python缩进问题[2021-09-07]

    可能是TAB跟空格的问题,解决方案: 1. 把缩进都删除; 2. 每级缩进只用一个空格,这样问题是解决了; 3. 最好的建议是File--New Window,新建一个py文件,在这个里面输入代码。
  • YAML文件使用空格作为缩进,可以使用2或4个空格作为缩进,但不能使用制表符 。 换句话说,禁止标签缩进: 为什么YAML禁止标签? 由于不同的编辑和工具对它们的处理方式不同,选项卡已被禁止。 而且由于缩进对YAML的适当解释非常重要,所以这个问题就算是非常棘手,甚至无法尝试。 事实上,Python的Guido van Rossum已经承认,允许Python中的TAB对于许多人来说是一件令人头痛的事,那就是他再次设计Python,他会禁止它们。 (来源: YAML FAQ (感谢Destiny Archit ...
  • 安装此插件: https://github.com/chase/vim-ansible-yaml 它是由可以记住的,但在理论上它将与各种YAML文件一起工作。 您将不得不:设置filetype = ansible不幸的是,如果您不使用可协助的相关文件。 Install this plugin: https://github.com/chase/vim-ansible-yaml It is made with Ansible in mind, but in theory it will work with a ...
  • 假设原始和翻译每行包含完全相同的字符串(缩进问题除外),扫描前导空格的快速和脏脚本可以解决此问题: #!/usr/bin/env ruby # encoding: UTF-8 indented = File.readlines(ARGV[0]).map do |l| l.scan(/^\s+/)[0] end.zip(File.readlines(ARGV[1])).map { |e| e.join }.join File.open(ARGV[1], "w") { |io| io.write(ind ...
  • 假设什么都没有覆盖inspect ,这是什么用途?: # 与此相比: --- !ruby/object:Foo bar: wat YAML更有可能在非平凡的情况下产生有用的输出。 它也是便携式的,可以用作在不同系统之间发送序列化数据的更可靠的方法。 Assuming nothing overrides inspect, of what use is this?: # When compared to ...
  • JSON比YAML更正式。 恕我直言: YAML更适合快速创建和理解软件模块的简单配置文件; JSON更适用于软件模块之间的简单数据传输的快速实现和实现。 JSON is more formal format than YAML. IMHO: YAML is better for fast creation and understanding of simple configuration files of software modules; JSON is better for fast implemen ...
  • 事实证明,使用缩进Jinja2过滤器可以解决问题。 indent (s,width = 4,indentfirst = False) 返回传递的字符串的副本,每行缩进4个空格。 第一行没有缩进。 如果您想更改空格数或缩进第一行,您可以将其他参数传递给过滤器: {{mytext | indent(2,true)}}缩进两个空格并缩进第一行。 所以,在我的情况下是: default: paths: features: '../all/tests/features' filters: ta ...
  • 您在StringReader上调用toString() ,它返回Object.toString()提供的神秘而无用的实现。 java.io.StringReader@329dbdbf即它不会告诉您是否有选项卡。 相反,您需要在将其传递给StringReader之前检查您使用的原始String ,并可能应用.replaceAll("\t", "\\t") You are calling toString() on your StringReader which returns the cryptic and ...
  • 是的,这看起来像是C syck库中的一个bug。 我使用PHP syck绑定(v 0.9.3)检查了它: http ://pecl.php.net/package/syck并且存在相同的错误,表明它是库中的错误而不是ruby yaml库或ruby-syck绑定: // phptestsyck.php 在cli上运行它会产生相同的SyckException: ...
  • 遇到错误'不允许使用制表符进行缩进'< - 这似乎是正确的。 不是这样。 这是规格中的相关产品 : [140] c-flow-mapping(n,c) ::= “{” s-separate(n,c)? ns-s-flow-map-entries(n,in-flow(c))? “}” s-separate(n,c)解析为s-separate-lines(n) (因为我们不在block-key或flow-key )。 跳过一些步骤,我们到达s ...