2015-10-02 1 views
0

Je dois utiliser YAML pour un projet. J'ai un fichier YAML que j'utilise pour remplir une liste dans un programme Python qui interagit avec les données.Analyser yaml dans une liste en python

Mes données ressemble à ceci:

Employees: 
    custid: 200 
    user: Ash 
     - Smith 
     - Cox 

J'ai besoin du code python pour itérer sur ce fichier YAML et remplir une liste comme ceci:

list_of_Employees = ['Ash', 'Smith' 'Cox'] 

Je sais que je dois ouvrir le fichier et puis stocker les données dans une variable, mais je ne peux pas comprendre comment entrer chaque élément séparément dans une liste. Idéalement, je voudrais utiliser la fonction d'ajout afin de ne pas avoir à déterminer la taille de l'utilisateur à chaque fois.

+1

Possible duplication de [Analyse d'un fichier YAML en Python, et accès aux données?] (Http://stackoverflow.com/questions/8127686/parsing-a-yaml-file-in-python-and-accessing-the- données) – idjaw

Répondre

0
with open("employees.yaml", 'r') as stream: 
    out = yaml.load(stream) 
    print out['Employees']['user'] 

devrait déjà vous donner la liste des notes users.Also que votre yaml manque un tiret après le noeud utilisateur

+0

Merci, Le tableau de bord manquant causait le problème – johnfk3

0

séquences YAML sont converties en listes de python pour vous (au moins lors de l'utilisation PyYAML ou ruamel.yaml), donc Vous n'avez rien à ajouter vous-même.

Tant dans PyYAML que dans ruamel.yaml, vous transmettez un fichier/flux à la routine load() ou vous lui remettez une chaîne. Les deux:

import ruamel.yaml 

with open('input.yaml') as fp: 
    data = ruamel.yaml.load(fp) 

et

import ruamel.yaml 

with open('input.yaml') as fp: 
    str_data = fp.read() 
data = ruamel.yaml.load(str_data) 

font la même chose.

En supposant que vous avez corrigé votre entrée:

Employees: 
    custid: 200 
    user: 
    - Ash 
    - Smith 
    - Cox 

vous pouvez imprimer des données:

{'Employees': {'custid': 200, 'user': ['Ash', 'Smith', 'Cox']}} 

et de voir que la liste est déjà là et est accessible via les recherches dict normales: data['Employees']['user']