python - मैं एक सीएसवी फ़ाइल में एक पायथन शब्दकोश कैसे लिखूं?




dictionary (2)

आप DictWriter.writerows() का उपयोग कर रहे हैं जो DictWriter.writerows() की एक सूची की अपेक्षा करता है, न कि एक निर्देश। आप एक पंक्ति लिखने के लिए DictWriter.writerow() चाहते हैं।

यदि आप सीएसवी फ़ाइल के लिए हेडर चाहते हैं तो आप DictWriter.writeheader() का भी उपयोग करना चाहेंगे।

आप फ़ाइलों को खोलने के लिए कथन के with भी जांचना चाह सकते हैं। यह केवल अधिक पाइथोनिक और पठनीय नहीं है बल्कि अपवाद होने पर भी आपके लिए बंद हो जाता है।

इन परिवर्तनों के साथ उदाहरण बनाया गया:

import csv

my_dict = {"test": 1, "testing": 2}

with open('mycsvfile.csv', 'wb') as f:  # Just use 'w' mode in 3.x
    w = csv.DictWriter(f, my_dict.keys())
    w.writeheader()
    w.writerow(my_dict)

जो उत्पादन करता है:

test,testing
1,2

इस प्रश्न का उत्तर यहां दिया गया है:

मेरे पास ऐसा लगता है जो मुझे लगता है कि यह एक बहुत ही आसान काम होना चाहिए जिसे मैं हल नहीं कर सकता।

मैं एक सीएसवी फ़ाइल में एक पायथन शब्दकोश कैसे लिखूं? मैं चाहता हूं कि फ़ाइल की शीर्ष पंक्ति में कुंजीपटल कुंजी और दूसरी पंक्ति के लिए महत्वपूर्ण मानों को लिखना है।

मेरे पास आने वाला सबसे नज़दीकी निम्नलिखित है (कि मुझे किसी और की पोस्ट से मिला है):

f = open('mycsvfile.csv','wb')
w = csv.DictWriter(f,my_dict.keys())
w.writerows(my_dict)
f.close()

समस्या यह है कि उपर्युक्त कोड केवल पहली पंक्ति में कुंजी लिख रहा है और यही वह है। मुझे दूसरी पंक्ति में लिखे गए मान नहीं मिल रहे हैं।

कोई विचार?


आपका कोड काम करने के बहुत करीब था।

डिक्टवाइटर की बजाय नियमित csv.writer का उपयोग करने का प्रयास करें। उत्तरार्द्ध मुख्य रूप से शब्दकोशों की एक सूची लिखने के लिए प्रयोग किया जाता है।

यहां कुछ कोड दिया गया है जो प्रत्येक कुंजी / मान जोड़ी को एक अलग पंक्ति पर लिखते हैं:

import csv

somedict = dict(raymond='red', rachel='blue', matthew='green')
with open('mycsvfile.csv','wb') as f:
    w = csv.writer(f)
    w.writerows(somedict.items())

यदि इसके बजाय आप सभी पंक्तियों को एक पंक्ति पर और अगले सभी मानों को चाहते हैं, तो यह भी आसान है:

with open('mycsvfile.csv','wb') as f:
    w = csv.writer(f)
    w.writerow(somedict.keys())
    w.writerow(somedict.values())

प्रो टिप : इस तरह के कोड को विकसित करते समय, लेखक को w = csv.writer(sys.stderr) सेट करें ताकि आप आसानी से देख सकें कि क्या उत्पन्न किया जा रहा है। जब तर्क पूर्ण होता है, तो w = csv.writer(f) पर वापस स्विच करें।





dictionary