Python Day13(yaml)

1.什么是YAML?
YAML是一个类似 XML、JSON 的标记性语言。YAML 强调以数据为中心,并不是以标识语言为重点。因而 YAML 本身的定义比较简单,号称“一种人性化的数据格式语言”。
 
2.语法规则
  • 大小写敏感
  • 使用缩进表示层级关系
  • 缩进时不允许使用Tab键,只允许使用空格
  • 以#号作为注释符
 
3.数据结构
  • 列表,数组(一串类型相同或者不同的组合)
  • 纯量(类似于原子性,不可再分)
  • 对象(键值对的组合,一对一的特性)
 
4.列表、数组
- 数组1
- 数组2
- 数组3
- 数组4
- 数组5
5.原子量
也即是纯量,不能再细分的数据结构。类比其他的编程语言,YAML也充分地考虑到了这一点。
  • 数值型: 直接书写即可。不区分整型还是浮点型。

  • 字符串: 字符串可以加引号,也可以不加。还有相关于换行什么的更多特殊的用法,这里强烈建议阅读以下阮一峰老师的这篇文章: 
    http://www.ruanyifeng.com/blog/2016/07/yaml.html?f=tt

    • 单引号内会自动的转义特殊字符,对单引号转义是使用两个单引号,其表示一个原生的单引号。
    • 双引号内保持原字符不变。
  • 日期,时间:

    • 时间: ISO8601 格式。如2001-12-14t21:59:43.10-05:00
    • 日期: 采用复合 iso8601 格式的年、月、日表示。如1970-01-01
  • 关于强制类型转换: 可以通过两个英文感叹号+新的数据类型的方式来进行强制的类型转换。
6.yaml简单操作
 
test.yaml
 1 bind1:
 2   hostname: server1
 3   remote_users:
 4     - user1:
 5       username: root
 6       auth_type: ssh-key
 7       #password: 123
 8     - user2:
 9       username: alex
10       auth_type: ssh-passwd
11       password: alex3714
12   groups:
13     - bj_group
14   user_profiles:
15     - alex
16 
17 bind2:
18   hostname: server2
19   remote_users:
20     - user1:
21       username: alex
22       auth_type: ssh-passwd
23       password: alex3714
24   groups:
25     - bj_group
26     - sh_group
27 
28   user_profiles:
29     - rain

load

 1 import yaml
 2 f = open("test.yaml", "r")
 3 y = yaml.load(f)
 4 for k, v in y.items():
 5     print(k, v)
 6 
 7 """
 8 bind2 {'hostname': 'server2', 'groups': ['bj_group', 'sh_group'], 'user_profiles': ['rain'], 'remote_users': [{'user1': None, 'password': 'alex3714', 'auth_type': 'ssh-passwd', 'username': 'alex'}]}
 9 bind1 {'hostname': 'server1', 'groups': ['bj_group'], 'user_profiles': ['alex'], 'remote_users': [{'user1': None, 'auth_type': 'ssh-key', 'username': 'root'}, {'user2': None, 'auth_type': 'ssh-passwd', 'password': 'alex3714', 'username': 'alex'}]}
10 """
原文地址:https://www.cnblogs.com/breakering/p/7128221.html