YAML 与JSON类似,是专门用来写配置文件的语言,非常简洁和强大,但是比 JSON 格式方便,JSON能做的YAML都能做!

安装

pip install pyyaml

语法

  • 区分大小写(同python)
  • 使用缩进表示层级关系(同python)
  • 用空格缩进,注意同级数据左侧对齐即可
  • # 和python一样注释(只有单行注释)

支持数据结构

支持结构详解
对象键值对的集
数组list
变量str、bool、int、float、Null、time、date

对象

键值对,使用冒号表示

dict1: { name: Steve, foo: bar } 
# {'dict1': {'foo': 'bar', 'name': 'Steve'}}

数组

两种写法

# 1、 {'数组1': ['Cat', 'Dog']}
数组1: [Cat, Dog]


#2、 {'数组2': ['Cat', 'Dog', 'Goldfish']}
数组2:
 - Cat
 - Dog
 - Goldfish

字符串

注意事项较多

#1、字符串默认用引号
str_普通: 字符串

#2、空格或特殊字符,需要放在引号之中。
str_包含特殊符号: '*字符串'

#3、双引号不会对特殊字符转义。
str_单引号: '内容\n字符串'
str_双引号: "content\n string"

#4、单引号之中如果还有单引号,必须连续使用两个单引号转义。
str_引号转义: 'labor''s day'

#5、从第二行开始,必须有一个单空格缩进。换行符会被转为空格
str_多行: 这是一段
  多行
  字符串
  
#6、多行字符串可以使用|保留换行符
str_保留换行符: |
  Foo
  Bar
  
#7、+表示保留文字块末尾的换行,-表示删除字符串末尾的换行。
s1: |
  Foo4
s2: |+
  Foo5
s3: |-
  Foo6

纯量

#1、数值
number: 12.30 #{'number': 12.3}

#2、布尔
isSet: true #{'isSet': True}
isSet1: false #{'isSet1': False}

# 3、null
parent: ~   #{'parent': None}

#4、时间
time1: 2001-12-14t21:59:43.10-05:00  #{'time1': datetime.datetime(2001, 12, 15, 2, 59, 43, 100000)}

##5、日期
date: 2017-07-31  #{'date': datetime.date(2017, 7, 31)}

#6、强转为str
int_to_str: !!str 123  #{'bool_to_str': 'true'}
bool_to_str: !!str true #{'bool_to_str': 'true'}

组合运用

对象和数组可以结合使

数组:
 - Ruby
 - Perl
 - Python
websites:
 YAML: yaml.org
 Ruby: ruby-lang.org
 Python: python.org
 Perl: use.perl.org
#{'数组': ['Ruby', 'Perl', 'Python'], 'websites': {'Python': 'python.org', 'YAML': 'yaml.org', 'Ruby': 'ruby-lang.org', 'Perl': 'use.perl.org'}}

db:
    host: xxx
    port: 3306
    user: weibospider
    password: xxx
    db_name: weibo
    db_type: mysql

#{'db': {'host': 'xxx', 'db_name': 'weibo', 'user': 'weibospider', 'db_type': 'mysql', 'password': 'xxx', 'port': 3306}}
Last modification:September 4, 2020
如果觉得我的文章对你有用,请随意赞赏