python處理yaml格式文檔的官方文檔:https://pyyaml.org/wiki/PyYAMLDocumentation
yaml
是一個可讀性高,用來表達數據序列化的格式,通常作為配置文件使用。yaml文件是python文件的解析器和發射器(parser and emitter)
yaml語法
- 大小寫敏感
- 使用縮進表示層級關系
- 縮進時不允許使用Tab鍵,只允許使用空格。
- 縮進的空格數目不重要,只要相同層級的元素左側對齊即可
yaml支持的數據結構
- 對象:鍵值對的集合,又稱為映射(mapping)/ 哈希(hashes) / 字典(dictionary)
- 數組:一組按次序排列的值,又稱為序列(sequence) / 列表(list)
- 純量(scalars):單個的、不可再分的值.javaScrip中的純量有:字符串、布爾值、整數、浮點數、Null、時間、日期
yaml最常用的格式表示方式
- 對象的一組鍵值對,使用冒號結構表示。
animal: pets
- 一組連詞線開頭的行,構成一個數組。
- Cat
- Dog
- Goldfish
- 對象和數組可以結合使用,形成復合結構。
languages:
- Ruby
- Perl
- Python
websites:
YAML: yaml.org
Ruby: ruby-lang.org
Python: python.org
Perl: use.perl.org
- 兩組數據的時候用
---
分割或者數組嵌套的方法
- Cat
- Dog
- Goldfish
---
- Cat
- Dog
- Goldfish
yaml中比較高級的表示
null
用~
表示。
parent: ~
- 多行字符串可以使用
|
保留換行符,也可以使用>
折疊換行。
this: |
Foo
Bar
that: >
Foo
Bar
轉為 JavaScript 代碼如下。
{ this: 'Foo\nBar\n', that: 'Foo Bar\n' }
+
表示保留文字塊末尾的換行,-
表示刪除字符串末尾的換行。
s1: |
Foo
s2: |+
Foo
s3: |-
Foo
轉為 JavaScript 代碼如下。
{ s1: 'Foo\n', s2: 'Foo\n\n\n', s3: 'Foo' }
- 錨點
&
和別名*
,可以用來引用。
defaults: &defaults
adapter: postgres
host: localhost
development:
database: myapp_development
<<: *defaults
test:
database: myapp_test
<<: *defaults
等同於下面的代碼。
defaults:
adapter: postgres
host: localhost
development:
database: myapp_development
adapter: postgres
host: localhost
test:
database: myapp_test
adapter: postgres
host: localhost
&
用來建立錨點(defaults
),<<
表示合並到當前數據,*
用來引用錨點。
下面是另一個例子。
- &showell Steve
- Clark
- Brian
- Oren
- *showell
轉為 JavaScript 代碼如下。
[ 'Steve', 'Clark', 'Brian', 'Oren', 'Steve' ]
函數和正則表達式的轉換
這是 JS-YAML 庫特有的功能,可以把函數和正則表達式轉為字符串。
# example.yml
fn: function () { return 1 }
reg: /test/
解析上面的 yml 文件的代碼如下。
var yaml = require('js-yaml');
var fs = require('fs');
try {
var doc = yaml.load(
fs.readFileSync('./example.yml', 'utf8')
);
console.log(doc);
} catch (e) {
console.log(e);
}
從 JavaScript 對象還原到 yaml 文件的代碼如下。
var yaml = require('js-yaml');
var fs = require('fs');
var obj = {
fn: function () { return 1 },
reg: /test/
};
try {
fs.writeFileSync(
'./example.yml',
yaml.dump(obj),
'utf8'
);
} catch (e) {
console.log(e);
}
python處理yaml文件的常用方法:https://www.cnblogs.com/saiminhou/p/13729119.html