您好,登錄后才能下訂單哦!
小編這次要給大家分享的是Python3如何操作YAML文件格式,文章內(nèi)容豐富,感興趣的小伙伴可以來了解一下,希望大家閱讀完這篇文章之后能夠有所收獲。
數(shù)據(jù)及配置文件之爭
數(shù)據(jù)及文件通常有三種類型:
YAML兼容JSON格式,簡潔,強大,靈活,可以很方便的構(gòu)造層級數(shù)據(jù)并快速轉(zhuǎn)為Python中的字典。
YAML簡介
YAML(YAML Ain't Markup Language)即一種反標記(XML)語言。強調(diào)數(shù)據(jù)為中心,而非標記。YAML大小寫敏感,使用縮進代表層級關(guān)系。
YAML中支持對象Object(對應Python中的字典), 數(shù)組Array(對應Python中的列表)以及常量(字符串、數(shù)字(int/float),true/false/null)。
相比于JSON格式,YAML免除了雙引號,逗號,大括號,中括號等,(當然也支持原始的JSON格式),并且支持注釋,類型轉(zhuǎn)換,跨行,錨點,引用及插入等等。
基本格式
示例文件demo.yaml:
# 注釋:示例yaml文件 name: Cactus age: 18 skills: - - Python - 3 - - Java - 5 has_blog: true gf: ~
相當于以下JSON格式
{ "name": "Cactus", "age": 18, "skills": [ [ "Python", 3 ], [ "Java", 5 ] ], "has_blog": true, "gf": null }
類型轉(zhuǎn)換
使用!!str, !!float等可以將默認類型轉(zhuǎn)為指定類型,如
對應JSON格式
[ 3.0, "4", "true" ]
多行文本及拼接
示例:
a: |
我
喜歡你b: >
我
不喜歡你
才怪對應JSON格式
{ "a": "我\n喜歡你\n", "b": "我 不喜歡你 才怪" }
錨點,引用及插入
在-或:后 加上&錨點名為當前字段建立錨點,下面可使用*錨點名引用錨點,或使用<<: *錨點名直接將錨點數(shù)據(jù)插入到當前的數(shù)據(jù)中,示例如下:
users: - &zs name: 張三 password: !!str 123456 - &ls name: 李四 password: abcdefg case1: login: *zs case2: 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 yaml yaml_str = ''' name: Cactus age: 18 skills: - - Python - 3 - - Java - 5 has_blog: true gf: ~ ''' print(yaml.safe_load(yaml_str))
打印結(jié)果:
{'name': 'Cactus', 'age': 18, 'skills': [['Python', 3], ['Java', 5]], 'has_blog': True, 'gf': None}
如果有中文,可以使用yaml.load(yaml_str.encoding('utf-8))
示例2:yaml文件 -> 字典
import yaml with open('demo.yaml', encoding='utf-8') as f: # demo.yaml內(nèi)容同上例yaml字符串 print(yaml.safe_load(f))
打印結(jié)果同上例。
字典 -> yaml字符串或文件
import yaml dict_var = {'name': 'Cactus', 'age': 18, 'skills': [['Python', 3], ['Java', 5]], 'has_blog': True, 'gf': None} print(yaml.dump(dict_var,)) # 轉(zhuǎn)為字符串,使用默認flow流格式 with open('demo5.yaml', 'w', encoding='utf-8') as f: yaml.dump(dict_var, f, default_flow_style=False) # 寫入文件,不是用flow流格式
打印內(nèi)容:
age: 18
gf: null
has_blog: true
name: Cactus
skills:
- [Python, 3]
- [Java, 5]
1demo5.yaml1文件內(nèi)容:
age: 18
gf: null
has_blog: true
name: Cactus
skills:
- - Python
- 3
- - Java
- 5
看完這篇關(guān)于Python3如何操作YAML文件格式的文章,如果覺得文章內(nèi)容寫得不錯的話,可以把它分享出去給更多人看到。
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。