2008-09-18 10 views
16

पाइथन के साथ इंटरैक्टिव रूप से काम करना, कभी-कभी परिणाम प्रदर्शित करना आवश्यक होता है जो कुछ मनमाने ढंग से जटिल डेटा संरचना (जैसे एम्बेडेड सूचियों आदि के साथ सूचियां) उन्हें प्रदर्शित करने का डिफ़ॉल्ट तरीका केवल एक विशाल रैखिक डंप है जो बस ऊपर और ऊपर लपेटता है और आपको इसे पढ़ने के लिए ध्यान से पार्स करना होगा।क्या अजगर डेटा के लिए एक सुंदर प्रिंटर है?

क्या ऐसा कुछ है जो कोई अजगर वस्तु लेगा और इसे अधिक तर्कसंगत तरीके से प्रदर्शित करेगा। जैसे

[0, 1, 
    [a, b, c], 
    2, 3, 4] 
बजाय

:

[0, 1, [a, b, c], 2, 3, 4] 

मुझे पता है कि एक बहुत अच्छा उदाहरण नहीं है, लेकिन मैं आपको अंदाजा हो लगता है।

उत्तर

24
from pprint import pprint 
a = [0, 1, ['a', 'b', 'c'], 2, 3, 4] 
pprint(a) 

नोट है कि मेरे उदाहरण की तरह एक छोटी सूची के लिए, pprint वास्तव में यह एक लाइन में सब प्रिंट होगा। हालांकि, अधिक जटिल संरचनाओं के लिए यह सुंदर प्रिंटिंग डेटा का एक बहुत अच्छा काम करता है।

+0

अच्छा! धन्यवाद। – Ferruccio

3

एक और अच्छा विकल्प IPython का उपयोग करना है, जो स्वचालित सुंदर प्रिंटिंग, विधियों के टैब-समापन, आसान खोल पहुंच, और बहुत कुछ सहित कई अतिरिक्त सुविधाओं के साथ एक इंटरैक्टिव वातावरण है। यह भी स्थापित करना बहुत आसान है।

IPython tutorial

+1

रिकॉर्ड के लिए, मेरा मानना ​​है कि आईपीथॉन चीजों को प्रिंट करने के लिए पीप्रिंट का उपयोग करता है, इसलिए यदि आप अपने प्रोग्राम में आईपीथॉन जैसी चीजें प्रिंट करना चाहते हैं, तो आप पप्रिंट चाहते हैं। –

+0

ठीक है, आपके प्रोग्राम में एक आईपीथन खोल भी आयात कर सकते हैं। मैं ipython इंगित करता हूं क्योंकि इसमें सुंदर मुद्रण के अलावा कई अन्य उपयोगी विशेषताएं हैं। –

10

Somtimes YAML इस के लिए अच्छा हो सकता है।

import yaml 
a = [0, 1, ['a', 'b', 'c'], 2, 3, 4] 
print yaml.dump(a) 

का उत्पादन:

- 0 
- 1 
- [a, b, c] 
- 2 
- 3 
- 4 
8

pprint.pprint के अलावा, pprint.pformat पठनीय __repr__ रों बनाने के लिए वास्तव में उपयोगी है। मेरा कॉम्प्लेक्स __repr__ एस आमतौर पर ऐसा दिखता है:

def __repr__(self): 
    from pprint import pformat 

    return "<ClassName %s>" % pformat({"attrs":self.attrs, 
             "that_i":self.that_i, 
             "care_about":self.care_about}) 
+0

पप्रिंट (एक्स) सिर्फ "प्रिंट पॉर्मेट (एक्स)" है, इसलिए आप स्ट्रिंग के रूप में प्रिंट किए गए पप्रिंट प्रिंट तक पहुंच सकते हैं। कभी-कभी बहुत उपयोगी – Rory

संबंधित मुद्दे