Примеры yaml в Python | Way23

Примеры yaml в Python

YAML — это текстовый формат формат разметки. Для загрузки файлов YAML в Python используется модуль PyYAMLopen in new window. Ниже несколько примеров преобразования структур YAML в структуры Python.

Файлы YAML взяты из спецификацииopen in new window.

Примеры

Код для загрузки файлов YAML:

import yaml

config = yaml.load(open('config.yaml'), Loader=yaml.Loader)

print(config)
1
2
3
4
5

Список

- Mark McGwire
- Sammy Sosa
- Ken Griffey
1
2
3
['Mark McGwire', 'Sammy Sosa', 'Ken Griffey']
1

Словарь

hr:  65    # Home runs
avg: 0.278 # Batting average
rbi: 147   # Runs Batted In
1
2
3
{'hr': 65, 'avg': 0.278, 'rbi': 147}
1

Словарь списков

american:
  - Boston Red Sox
  - Detroit Tigers
  - New York Yankees
national:
  - New York Mets
  - Chicago Cubs
  - Atlanta Braves
1
2
3
4
5
6
7
8
{'american': ['Boston Red Sox', 'Detroit Tigers', 'New York Yankees'],
 'national': ['New York Mets', 'Chicago Cubs', 'Atlanta Braves']}
1
2

Список словарей

-
  name: Mark McGwire
  hr:   65
  avg:  0.278
-
  name: Sammy Sosa
  hr:   63
  avg:  0.288
1
2
3
4
5
6
7
8
[{'name': 'Mark McGwire', 'hr': 65, 'avg': 0.278},
 {'name': 'Sammy Sosa', 'hr': 63, 'avg': 0.288}]
1
2

Список списков

- [name        , hr, avg  ]
- [Mark McGwire, 65, 0.278]
- [Sammy Sosa  , 63, 0.288]
1
2
3
[['name', 'hr', 'avg'], 
 ['Mark McGwire', 65, 0.278], 
 ['Sammy Sosa', 63, 0.288]]
1
2
3

Словарь словарей

Mark McGwire: {hr: 65, avg: 0.278}
Sammy Sosa: {
    hr: 63,
    avg: 0.288
  }
1
2
3
4
5
{'Mark McGwire': {'hr': 65, 'avg': 0.278}, 
 'Sammy Sosa': {'hr': 63, 'avg': 0.288}}
1
2

Несколько документов в одном файле

# Ranking of 1998 home runs
---
- Mark McGwire
- Sammy Sosa
- Ken Griffey

# Team ranking
---
- Chicago Cubs
- St Louis Cardinals
1
2
3
4
5
6
7
8
9
10
config = yaml.load_all(open('config.yaml'), Loader=yaml.Loader)

for item in config:
    print(item)

# ['Mark McGwire', 'Sammy Sosa', 'Ken Griffey']
# ['Chicago Cubs', 'St Louis Cardinals']
1
2
3
4
5
6
7
Последниее изменение: 31.08.2021, 15:52:51