标签:大小 oid 姓名 分享 nbsp col load 结构 tar
一. Yaml
YAML 是一种简洁的非标记语言。YAML以数据为中心,使用空白,缩进,分行组织数据,从而使得表示更加简洁易读。
由于实现简单,解析成本很低,YAML特别适合在脚本语言中使用。列一下现有的语言实现:Ruby,Java,Perl,Python,PHP,JavaScript等。
YAML 是专门用来写配置文件的语言,非常简洁和强大,远比 JSON 格式方便。比如同一段数据Josn和Yaml的表示分别如下:
Json
{ name: ‘Tom Smith‘,age: 37,spouse: { name: ‘Jane Smith‘, age: 25 },children: [ { name: ‘Jimmy Smith‘, age: 15 },{ name: ‘Jenny Smith‘, age: 12 } ] }
yaml name: Tom Smith age: 37 spouse: name: Jane Smith age: 25 children: - name: Jimmy Smith age: 15 - name: Jenny Smith age: 12
清晰明了程度一下子就看出来了吧。
pip install yaml
数据最小的单位,不可以再分割。类似于Python中单个变量
flag
与Python的list数组结构类似,数组元素使用“-”开头,也可以根据缩进进行数组嵌套。
- Jack - Harry - Sunny # 也可以写成一行 [Jack,Harry,Sunny]
对应到python的list写法如下:
[‘Jack‘,‘Harry‘,‘Sunny‘]
对象的一组键值对,使用冒号结构表示。类似Python中的字典数据结构。
platformName: Android platformVersion: 6.0.1 # Yaml 也允许另一种写法,将所有键值对写成一个行内对象。 {platformName: Android,platformVersion: 6.0.1} 注意:冒号后面一定要有空格!对应到python字典的写法如下: {‘platformName‘: ‘Android‘, ‘platformVersion‘: ‘6.0.1‘}
yaml数据嵌套表示可以将上面的各类数据根据实际场景进行组合嵌套。
Tom Smith 37岁,他有一个妻子叫 Jane Smith,25岁。 另外他有2个孩子,一个叫Jimmy Smith,15岁;另外一个叫Jenny Smith ,12岁。
yaml语法表示如下:
name: Tom Smith age: 37 spouse: name: Jane Smith age: 25 children: - name: Jimmy Smith age: 15 - name: Jenny Smith age: 12
转化为Python的写法为:
{‘name‘:‘Tom Smith‘,‘age‘:37,‘spouse‘:{‘name‘:‘Jane Smith‘,‘age‘:25},‘childern‘:[{‘name‘:‘Jimmy Smith‘,‘age‘:15},{‘name‘:‘Jenny Smith‘,‘age‘:12}]}
load(stream, Loader=Loader) 解析文件流中的第一个YAML文档并生成相应的Python对象。
# 读取familyinfo.yaml文件的数据 import yaml file = open(‘familyinfo.yaml‘, ‘r‘) data = yaml.load(file) # 打印全量data数据 print(data) # 获取配偶信息 print(data[‘spouse‘]) # 分别获取配偶的姓名和年龄 print(data[‘spouse‘][‘name‘]) print(data[‘spouse‘][‘age‘]) # 获取所有孩子的信息 print(data[‘children‘]) # 分别获取每个孩子的信息 print(data[‘children‘][0]) print(data[‘children‘][0][‘name‘]) print(data[‘children‘][0][‘age‘]) print(data[‘children‘][1]) print(data[‘children‘][1][‘name‘]) print(data[‘children‘][1][‘age‘]) # 修改Tom Smith的名字,但是不写入yaml文件 data[‘name‘] = ‘Ma Mingchen‘ print(data[‘name‘]) # 修改第一个孩子的名字 data[‘children‘][0][‘name‘]=‘Ma Yuhe‘ print(data[‘children‘][0][‘name‘])
方法:dump()可以将Python对象序列化成YAML流。如果stream为None,则返回生成的字符串。
将下面python数据类型转化为yaml数据类型
slogan=[‘welcome‘,‘to‘,‘BeiJing‘] website={‘url‘:‘www.baidu.com‘}
import yaml # 将下面python数据类型转化为yaml数据类型 slogan=[‘welcome‘,‘to‘,‘BeiJing‘] website={‘url‘:‘www.baidu.com‘} print(slogan) print(website) # 将python数据类型转换为yaml流 print(yaml.dump(slogan)) print(yaml.dump(website))
标签:大小 oid 姓名 分享 nbsp col load 结构 tar
原文地址:https://www.cnblogs.com/victorm/p/10200019.html