当前位置:网站首页>Goal: do not exclude yaml syntax. Try to get started quickly
Goal: do not exclude yaml syntax. Try to get started quickly
2022-07-07 21:18:00 【Look, the future】
Reading guide
The three years , except Makefile, I've never touched such a strange grammar . Of course Makefile I decided to give up , Because I can write CMake Hey .
You have to do it , Something to be used soon . Read through the grammar first , Not much anyway , Take it later Python Let's demonstrate that the world may feel clear ( Have to say ,Python What a good thing )
yaml ?
- Scripting language .
- For writing configuration files .
- The suffix is .yml.
- play docker、k8s There must be no escape from this .
yaml Basic grammar
- 1、 Case sensitive .
- 2、 Use indentation to indicate hierarchy , The number of spaces is not important , The same level can be consistent .
- 3、 Indenting is not allowed tab, Only spaces .
- 4、# Table annotation .
yaml data type
object : Set of key value pairs , Also known as mapping (mapping)/ Hash (hashes) / Dictionaries (dictionary)
Array : A set of values in order , Also called sequence (sequence) / list (list)
Pure quantity (scalars): A single 、 Nonseparable value
object
I can't bear it , We turn on python Editor for .
pip install pyyaml
Object key value pairs are represented by colons key: value, Add a space after the colon .
You can also use key:{key1: value1, key2: value2, …}.
You can also use indentation to represent hierarchical relationships ;
key:
child-key: value
child-key2: value2
We use it Python To transform :
import yaml
f = open("yaml1.yaml")
res = yaml.safe_load(f)
print(res)
/yaml_test/main.py
{
'key': {
'child-key': 'value', 'child-key2': 'value2'}}
Process finished with exit code 0
More complex object formats , You can use a question mark and a space to represent a complex key, A colon with a space represents a value:
?
- complexkey1
- complexkey2
:
- complexvalue1
- complexvalue2
This means that the property of an object is an array [complexkey1,complexkey2], The corresponding value is also an array [complexvalue1,complexvalue2]
( In the tutorial , however Python Can't be transformed , So I'm not sure . But it's also my first contact , So I can only put my words here .)
Array
With - The first row represents an array :
- A
- B
- C
/yaml_test/main.py
['A', 'B', 'C']
Process finished with exit code 0
YAML Support multidimensional array , You can use in line representation :
key: [value1, value2, …]
A child member of a data structure is an array , You can indent a space under the item .
-
- A
- B
- C
yaml_test/main.py
[['A', 'B', 'C']]
Process finished with exit code 0
A relatively complex example :
companies:
-
id: 1
name: company1
price: 200W
-
id: 2
name: company2
price: 500W
/yaml_test/main.py
{
'companies': [{
'id': 1, 'name': 'company1', 'price': '200W'}, {
'id': 2, 'name': 'company2', 'price': '500W'}]}
Process finished with exit code 0
intend companies Property is an array , Each array element is made up of id、name、price An object composed of three attributes .
Arrays can also use streaming (flow) How to express :
companies: [{
id: 1,name: company1,price: 200W},{
id: 2,name: company2,price: 500W}]
( Wouldn't it be nice to write that directly ? I'm shallow )
Composite structure
Arrays and objects can form a composite structure , example :
languages:
- Ruby
- Perl
- Python
websites:
YAML: yaml.org
Ruby: ruby-lang.org
Python: python.org
Perl: use.perl.org
Convert to json by :
I won't let this out , You can see for yourself .
Pure quantity
Pure quantity is the most basic , Nonseparable value , Include :
character string
Boolean value
Integers
Floating point numbers
Null
Time
date
Use an example to quickly understand the basic use of scalar :
boolean:
- TRUE #true,True Fine
- FALSE #false,False Fine
float:
- 3.14
- 6.8523015e+5 # You can use scientific counting
int:
- 123
- 0b1010_0111_0100_1010_1110 # Binary representation
null:
nodeName: 'null'
parent: ~ # Use ~ Express null
# It shows that None
string:
- ha-ha
- 'Hello world' # Special characters can be wrapped in double quotes or single quotes
- newline
newline2 # Strings can be split into multiple lines , Each line is converted to a space
yaml_test/main.py
{
'string': [' ha-ha ', 'Hello world', 'newline newline2']}
Process finished with exit code 0
date:
- 2018-02-17 # Date must use ISO 8601 Format , namely yyyy-MM-dd
datetime:
- 2018-02-17T15:02:31+08:00 # Time use ISO 8601 Format , Use... Between time and date T Connect , Finally using + Represents the time zone
yaml_test/main.py
{
'date': [datetime.date(2018, 2, 17)], 'datetime': [datetime.datetime(2018, 2, 17, 15, 2, 31, tzinfo=datetime.timezone(datetime.timedelta(seconds=28800)))]}
Process finished with exit code 0
quote
( This part is operated by me k8s I haven't met in this period of time )
& Anchor points and * Alias , Can be used to quote :
defaults: &defaults
adapter: postgres
host: localhost
development:
database: myapp_development
<<: *defaults
test:
database: myapp_test
<<: *defaults
amount to :
defaults:
adapter: postgres
host: localhost
development:
database: myapp_development
adapter: postgres
host: localhost
test:
database: myapp_test
adapter: postgres
host: localhost
yaml_test/main.py
{
'defaults': {
'adapter': 'postgres', 'host': 'localhost'}, 'development': {
'adapter': 'postgres', 'host': 'localhost', 'database': 'myapp_development'}, 'test': {
'adapter': 'postgres', 'host': 'localhost', 'database': 'myapp_test'}}
Process finished with exit code 0
& Used to build anchors (defaults),<< Represents merging into the current data ,* Used to reference anchor points .
Here's another example :
- &showell Steve
- Clark
- Brian
- Oren
- *showell
To Json The code is as follows :
[ 'Steve', 'Clark', 'Brian', 'Oren', 'Steve' ]
What about that ?:
-
- &showell Steve
-
- Clark
-
- Brian
-
- Oren
-
- *showell
Small tips:
If JSON Too long , You can make it .json Drag the file to Firefox to see .
边栏推荐
猜你喜欢
Tensorflow2. How to run under x 1 Code of X
Codesonar enhances software reliability through innovative static analysis
Cantata9.0 | 全 新 功 能
程序猿赚的那点钱算个P啊!
How to meet the dual needs of security and confidentiality of medical devices?
使用枚举实现英文转盲文
【OpenCV 例程200篇】223. 特征提取之多边形拟合(cv.approxPolyDP)
Helix QAC 2020.2 new static test tool maximizes the coverage of standard compliance
Klocwork code static analysis tool
[paper reading] maps: Multi-Agent Reinforcement Learning Based Portfolio Management System
随机推荐
【OpenCV 例程200篇】223. 特征提取之多边形拟合(cv.approxPolyDP)
C语言 整型 和 浮点型 数据在内存中存储详解(内含原码反码补码,大小端存储等详解)
Measure the height of the building
Codeforces Round #296 (Div. 2) A. Playing with Paper[通俗易懂]
Jetty: configure connector [easy to understand]
Postgresql数据库character varying和character的区别说明
Implement secondary index with Gaussian redis
Cantata9.0 | new features
【函数递归】简单递归的5个经典例子,你都会吗?
sqlHelper的增删改查
Insufficient permissions
npm uninstall和rm直接删除的区别
Devil daddy B1 hearing the last barrier, break through with all his strength
Is embedded system really safe? [how does onespin comprehensively solve the IC integrity problem for the development team]
Referrer和Referrer-Policy简介
Description of the difference between character varying and character in PostgreSQL database
【C语言】指针进阶---指针你真的学懂了吗?
Spark judges that DF is empty
智能交通焕发勃勃生机,未来会呈现哪些巨变?[通俗易懂]
[UVALive 6663 Count the Regions] (dfs + 离散化)[通俗易懂]