YAML — это текстовый формат формат разметки. Для загрузки файлов YAML в Python используется модуль PyYAML. Ниже несколько примеров преобразования структур YAML в структуры Python.
Файлы YAML взяты из спецификации.
Примеры
Код для загрузки файлов YAML:
1 2 3 4 5 |
import yaml config = yaml.load(open('config.yaml'), Loader=yaml.Loader) print(config) |
Список
1 2 3 |
- Mark McGwire - Sammy Sosa - Ken Griffey |
1 |
['Mark McGwire', 'Sammy Sosa', 'Ken Griffey'] |
Словарь
1 2 3 |
hr: 65 # Home runs avg: 0.278 # Batting average rbi: 147 # Runs Batted In |
1 |
{'hr': 65, 'avg': 0.278, 'rbi': 147} |
Словарь списков
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 3 |
{'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 |
- name: Mark McGwire hr: 65 avg: 0.278 - name: Sammy Sosa hr: 63 avg: 0.288 |
1 2 |
[{'name': 'Mark McGwire', 'hr': 65, 'avg': 0.278}, {'name': 'Sammy Sosa', 'hr': 63, 'avg': 0.288}] |
Список списков
1 2 3 4 |
- [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 4 5 |
Mark McGwire: {hr: 65, avg: 0.278} Sammy Sosa: { hr: 63, avg: 0.288 } |
1 2 |
{'Mark McGwire': {'hr': 65, 'avg': 0.278}, 'Sammy Sosa': {'hr': 63, 'avg': 0.288}} |
Несколько документов в одном файле
1 2 3 4 5 6 7 8 9 10 |
# 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 |
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'] |