YAML 与JSON类似,是专门用来写配置文件的语言,非常简洁和强大,但是比 JSON 格式方便,JSON能做的YAML都能做!
安装
pip install pyyaml
演示代码
百度网盘地址
密码:xkrm
语法
- 区分大小写(同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}}