2011-11-14 2 views
60

저는 YAML을 처음 사용하고 YAML 파일을 구문 분석하고 파싱 된 YAML에서 데이터를 사용/액세스하는 방법을 찾고 있습니다.Python에서 YAML 파일을 구문 분석하고 데이터에 액세스 하시겠습니까?

내가 예를 들어, PyYAML tutorial, "How can I parse a YAML file in Python", "Convert Python dict to object?의"YAML 파일을 구문 분석하는 방법에 대한 설명을 통해 온,하지만 내가 발견하지 않은 것은에서 데이터에 액세스하는 방법에 대한 간단한 예입니다 파싱 ​​된 YAML 파일.

treeroot: 
    branch1: branch1 text 
    branch2: branch2 text 

가 어떻게 텍스트 "BRANCH1 텍스트를"액세스합니까 :

내가 같은 YAML 파일이 있다고 가정?

"YAML parsing and Python?"은 해결책을 제공하지만보다 복잡한 YAML 파일에서 데이터에 액세스하는 데 문제가있었습니다. 그리고, "tree iteration"또는 "elementpath"표기법이나 XML 파일을 구문 분석 할 때 사용되는 것과 유사한 무언가와 유사한 무언가의 YAML 파일에서 데이터에 액세스하는 표준 방법이 있는지 궁금합니다.

+0

[Python에서 YAML 파일을 구문 분석하는 방법] 가능한 복제본 (https://stackoverflow.com/questions/1773805/how-can-i-parse-a-yaml-file-in-python) – fmsf

답변

117

PyYAML의 yaml.load() 함수는 YAML 문서를 원시 파이썬 데이터 구조로 구문 분석하므로 키 또는 색인을 사용하여 항목에 액세스 할 수 있습니다. 당신이 링크 된 질문에서 예를 사용 :

import yaml 
with open('tree.yaml', 'r') as f: 
    doc = yaml.load(f) 

당신이 사용하는 것이 branch1 text에 액세스하려면 :

txt = doc["treeroot"]["branch1"] 
print txt 
"branch1 text" 

당신의 YAML 문서에서 branch1 키의 값이 treeroot 키 아래입니다 때문이다.

+2

I get "TypeError : 문자열 인덱스는 str이 아닌 정수 여야합니다." 그것은 인덱스에 문자열을 사용할 수없는 것 같습니다. – sattu

+0

문자열에 액세스하려고합니다 (색인 생성). 너는 너무 깊어 질지 모른다. 당신이 접근하려는 요소에 이미 왔습니까? – Aphex

+0

@sattu "labelsize : 20"대신 "labelsize : 20"키와 값 사이에 공백이 없기 때문에 같은 오류가 발생했습니다. – mateuszb

관련 문제