पायथन में एक YAML फ़ाइल पार्स करना और डेटा एक्सेस करना?


84

मैं YAML के लिए नया हूं और एक YAML फ़ाइल पार्स करने और पार्स किए गए YAML से डेटा का उपयोग / उपयोग करने के तरीके खोज रहा हूं।

मैं YAML फ़ाइल को पार्स करने के तरीके के बारे में स्पष्टीकरण पर आया हूं, उदाहरण के लिए, PyYAML ट्यूटोरियल , " मैं पायथन में एक YAML फ़ाइल को पार्स कैसे कर सकता हूं ", " पायथन को ऑब्जेक्ट में परिवर्तित करें? ", लेकिन जो मैंने पाया है वह क्या है ? पार्स की गई YAML फ़ाइल से डेटा का उपयोग कैसे करें, इस पर सरल उदाहरण।

मान लें कि मेरे पास एक YAML फ़ाइल है जैसे:

 treeroot:
     branch1: branch1 text
     branch2: branch2 text

मैं "शाखा 1 पाठ" पाठ का उपयोग कैसे करूँ?

" YAML पार्सिंग और पायथन " एक समाधान प्रदान करता है, लेकिन मुझे अधिक जटिल YAML फ़ाइल से डेटा तक पहुँचने में समस्याएँ थीं। और, मैं सोच रहा था कि एक पार्स की गई YAML फ़ाइल से डेटा एक्सेस करने का कोई मानक तरीका है, संभवतः " ट्री इटरेशन " या " एलिमेंटपैथ " नोटेशन या कुछ ऐसा ही है जो किसी XML फ़ाइल को पार्स करते समय उपयोग किया जाएगा?


संभावित डुप्लिकेट मैं कैसे पायथन में एक
YAML

जवाबों:


152

चूंकि PyYAML का yaml.load()कार्य देशी Python डेटा संरचनाओं में 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


3
मुझे "TypeError: string सूचकांक पूर्णांक होना चाहिए, str नहीं"। ऐसा लगता है कि मैं सूचकांक के लिए स्ट्रिंग का उपयोग नहीं कर सकता।
सत्तू

आप एक स्ट्रिंग में (इंडेक्स इन) एक्सेस करने की कोशिश कर रहे हैं। तुम बहुत गहरे जा रहे हो; क्या आप पहले से ही उस तत्व पर हैं जिसे आप एक्सेस करने का प्रयास कर रहे हैं?
एपेक्स

@ सत्तू मैं वही त्रुटि थी क्योंकि मेरे पास कुंजी और मूल्य के बीच कोई स्थान नहीं था, अर्थात "लेबल करें: 20" के बजाय "लेबल करें: 20"
mateuszb
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.