时间:2021-05-22
数据及配置文件之争
数据及文件通常有三种类型:
YAML兼容JSON格式,简洁,强大,灵活,可以很方便的构造层级数据并快速转为Python中的字典。
YAML简介
YAML(YAML Ain't Markup Language)即一种反标记(XML)语言。强调数据为中心,而非标记。YAML大小写敏感,使用缩进代表层级关系。
YAML中支持对象Object(对应Python中的字典), 数组Array(对应Python中的列表)以及常量(字符串、数字(int/float),true/false/null)。
相比于JSON格式,YAML免除了双引号,逗号,大括号,中括号等,(当然也支持原始的JSON格式),并且支持注释,类型转换,跨行,锚点,引用及插入等等。
基本格式
示例文件demo.yaml:
# 注释:示例yaml文件name: Cactusage: 18skills: - - Python - 3 - - Java - 5has_blog: truegf: ~相当于以下JSON格式
{ "name": "Cactus", "age": 18, "skills": [ [ "Python", 3 ], [ "Java", 5 ] ], "has_blog": true, "gf": null}类型转换
使用!!str, !!float等可以将默认类型转为指定类型,如
对应JSON格式
[3.0,"4","true"]多行文本及拼接
示例:
a: |
我
喜欢你
b: >
我
不喜欢你
才怪对应JSON格式
{"a": "我\n喜欢你\n","b": "我 不喜欢你 才怪"}锚点,引用及插入
在-或:后 加上&锚点名为当前字段建立锚点,下面可使用*锚点名引用锚点,或使用<<: *锚点名直接将锚点数据插入到当前的数据中,示例如下:
users: - &zs name: 张三 password: !!str 123456 - &ls name: 李四 password: abcdefgcase1: login: *zscase2: user: <<: *ls age: 20对应JSON格式:
{ "users": [ { "name": "张三", "password": "123456" }, { "name": "李四", "password": "abcdefg" } ], "case1": { "login": { "name": "张三", "password": "123456" } }, "case2": { "user": { "name": "李四", "password": "abcdefg", "age": 20 } }}Python操作YAML文件及字符串
需要安装pyyaml, pip install pyyaml
和JSON文件类似,yaml也提供load和dump两种方法。
由于yaml.load()支持原生Python对象,不安全,建议使用yaml.safe_load()
示例1:yaml字符串 -> 字典
import yamlyaml_str = '''name: Cactusage: 18skills: - - Python - 3 - - Java - 5has_blog: truegf: ~'''print(yaml.safe_load(yaml_str))打印结果:
{'name': 'Cactus', 'age': 18, 'skills': [['Python', 3], ['Java', 5]], 'has_blog': True, 'gf': None}
如果有中文,可以使用yaml.load(yaml_str.encoding('utf-8))
示例2:yaml文件 -> 字典
打印结果同上例。
字典 -> yaml字符串或文件
打印内容:
age: 18
gf: null
has_blog: true
name: Cactus
skills:
- [Python, 3]
- [Java, 5]
1demo5.yaml1文件内容:
age: 18
gf: null
has_blog: true
name: Cactus
skills:
- - Python
- 3
- - Java
- 5
更多操作可参考pyyaml官方文档:https://pyyaml.org/wiki/PyYAMLDocumentation
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
什么是yaml一种标记语言。yaml是专门用来写配置文件的语言,非常简洁和强大更直观,更方便,有点类似于json格式yaml文件格式:test.yaml安装ya
文章摘要本文简单说明了FLV文件的格式,以此为出发点,使用Python实现FLV视频的拼接。一.FLV文件格式关于FLV文件格式的解析网上有诸多文章,在这里就简
本文实例讲述了python写xml文件的操作的方法,分享给大家供大家参考。具体方法如下:要生成的xml文件格式如下:samplexmlthingmaxiaoju
前言最近使用Python解析IDX文件格式的MNIST数据集,需要对二进制文件进行读取操作,其中我使用的是struct模块。查了网上挺多教程都写的挺好的,不过对
pyyaml模块在python中用于处理yaml格式数据,主要使用yaml.safe_dump()、yaml.safe_load()函数将python值和yam