程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

If you think yaml is strange, come to me and benchmark Python to let me get started quickly

編輯:Python

List of articles

    • Preface
    • yaml ?
    • yaml Basic grammar
    • yaml data type
      • object
      • Array
      • Composite structure
    • Pure quantity
    • quote

Preface

These two 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 .
My roommate at the front end said : You write C++ It's normal to see this strange ...

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

& 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 .


  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved