CSV (अल्पविराम से अलग किए गए मानों के लिए खड़ा है) प्रारूप स्प्रेडशीट द्वारा उपयोग किया जाने वाला एक सामान्य रूप से उपयोग किया जाने वाला डेटा प्रारूप है। पायथन के मानक पुस्तकालय में सीएसवी मॉड्यूल सीएसवी फाइलों पर पढ़ने/लिखने के संचालन को करने के लिए कक्षाएं और तरीके प्रस्तुत करता है।
लेखक ()
सीएसवी मॉड्यूल में यह फ़ंक्शन एक लेखक ऑब्जेक्ट देता है जो डेटा को एक सीमित स्ट्रिंग में परिवर्तित करता है और फ़ाइल ऑब्जेक्ट में संग्रहीत करता है। फ़ंक्शन को पैरामीटर के रूप में लिखने की अनुमति के साथ फ़ाइल ऑब्जेक्ट की आवश्यकता होती है। फ़ाइल में लिखी गई प्रत्येक पंक्ति एक न्यूलाइन वर्ण जारी करती है। लाइनों के बीच अतिरिक्त स्थान को रोकने के लिए, न्यूलाइन पैरामीटर '' पर सेट है।
लेखक वर्ग में निम्नलिखित विधियां हैं
लेखक ()
यह फ़ंक्शन आइटम को एक चलने योग्य (सूची, टपल या स्ट्रिंग) में लिखता है, उन्हें अल्पविराम वर्ण द्वारा अलग करता है।
लेखक ()
यह फ़ंक्शन पैरामीटर के रूप में पुनरावृत्तियों की सूची लेता है और फ़ाइल में प्रत्येक आइटम को अल्पविराम से अलग की गई पंक्ति के रूप में लिखता है।
निम्नलिखित उदाहरण राइट () फ़ंक्शन के उपयोग को दर्शाता है। सबसे पहले एक फाइल 'w' मोड में खोली जाती है। इस फ़ाइल का उपयोग लेखक वस्तु प्राप्त करने के लिए किया जाता है। टुपल्स की सूची में प्रत्येक टपल को राइटरो () विधि का उपयोग करके फाइल करने के लिए लिखा जाता है।
>>> import csv >>> persons=[('Lata',22,45),('Anil',21,56),('John',20,60)] >>> csvfile=open('persons.csv','w', newline='') >>> obj=csv.writer(csvfile) >>> for person in persons: obj.writerow(person) >>> csvfile.close()
यह वर्तमान निर्देशिका में 'persons.csv' फ़ाइल बनाएगा। यह निम्नलिखित डेटा दिखाएगा।
Lata,22,45 Anil,21,56 John,20,60
प्रत्येक पंक्ति को अलग-अलग लिखने के लिए सूची में पुनरावृत्ति करने के बजाय, हम राइटरो () विधि का उपयोग कर सकते हैं।
>>> csvfile = open('persons.csv','w', newline='') >>> obj = csv.writer(csvfile) >>> obj.writerows(persons) >>> obj.close()
पढ़ें ()
यह फ़ंक्शन एक रीडर ऑब्जेक्ट देता है जो सीएसवी फ़ाइल में लाइनों का एक पुनरावर्तक देता है। लूप के लिए नियमित का उपयोग करते हुए, फ़ाइल की सभी पंक्तियों को निम्न उदाहरण में प्रदर्शित किया जाता है।
>>> csvfile=open('persons.csv','r', newline='') >>> obj=csv.reader(csvfile) >>> for row in obj: print (row) ['Lata', '22', '45'] ['Anil', '21', '56'] ['John', '20', '60']
चूंकि रीडर ऑब्जेक्ट एक पुनरावर्तक है, अंतर्निहित अगला () फ़ंक्शन सीएसवी फ़ाइल में सभी पंक्तियों को प्रदर्शित करने के लिए भी उपयोगी है।
>>> csvfile = open('persons.csv','r', newline='') >>> obj = csv.reader(csvfile) >>> while True: try: row=next(obj) print (row) except StopIteration: break
सीएसवी मॉड्यूल एक बोली वर्ग को भी परिभाषित करता है। बोली सीएसवी प्रोटोकॉल को लागू करने के लिए उपयोग किए जाने वाले मानकों का समूह है। उपलब्ध बोलियों की सूची list_dialects() फ़ंक्शन द्वारा प्राप्त की जा सकती है।
>>> csv.list_dialects() ['excel', 'excel-tab', 'unix']
DictWriter()
यह फ़ंक्शन एक डिक्टवाइटर ऑब्जेक्ट देता है। यह लेखक वस्तु के समान है, लेकिन पंक्तियों को शब्दकोश वस्तु में मैप किया जाता है। फ़ंक्शन को लिखने की अनुमति के साथ फ़ाइल ऑब्जेक्ट और फ़ील्डनाम पैरामीटर के रूप में शब्दकोश में उपयोग की जाने वाली कुंजियों की एक सूची की आवश्यकता होती है। इसका उपयोग फ़ाइल में पहली पंक्ति को हेडर के रूप में लिखने के लिए किया जाता है।
राइटहेडर ()
यह विधि फ़ाइल में पहली पंक्ति के रूप में अल्पविराम से अलग की गई पंक्ति के रूप में शब्दकोश में कुंजियों की सूची लिखती है।
निम्नलिखित उदाहरण में, शब्दकोश वस्तुओं की एक सूची परिभाषित की गई है। सूची में प्रत्येक आइटम एक शब्दकोश है। राइट्रो () पद्धति का उपयोग करके, उन्हें अल्पविराम से अलग तरीके से फाइल करने के लिए लिखा जाता है।
>>> persons=[{'name':'Lata', 'age':22, 'marks':45}, {'name':'Anil', 'age':21, 'marks':56}, {'name':'John', 'age':20, 'marks':60}] >>> csvfile=open('persons.csv','w', newline='') >>> fields=list(persons[0].keys()) >>> obj=csv.DictWriter(csvfile, fieldnames=fields) >>> obj.writeheader() >>> obj.writerows(persons) >>> csvfile.close()
फ़ाइल निम्नलिखित सामग्री दिखाती है।
name,age,marks Lata,22,45 Anil,21,56 John,20,60
DictReader()
यह फ़ंक्शन अंतर्निहित CSV फ़ाइल से एक DictReader ऑब्जेक्ट देता है। रीडर ऑब्जेक्ट के मामले में, यह भी एक पुनरावर्तक है, जिसके उपयोग से फ़ाइल की सामग्री पुनर्प्राप्त की जाती है।
>>> csvfile = open('persons.csv','r', newline='') >>> obj = csv.DictReader(csvfile)
वर्ग फ़ील्डनाम विशेषता प्रदान करता है, फ़ाइल के शीर्षलेख के रूप में उपयोग की जाने वाली शब्दकोश कुंजी लौटाता है।
>>> obj.fieldnames ['name', 'age', 'marks']
अलग-अलग डिक्शनरी ऑब्जेक्ट लाने के लिए DictReader ऑब्जेक्ट पर लूप का उपयोग करें।
>>> for row in obj: print (row)
इसका परिणाम निम्न आउटपुट में होता है।
OrderedDict([('name', 'Lata'), ('age', '22'), ('marks', '45')]) OrderedDict([('name', 'Anil'), ('age', '21'), ('marks', '56')]) OrderedDict([('name', 'John'), ('age', '20'), ('marks', '60')])
OrderedDict ऑब्जेक्ट को सामान्य शब्दकोश में बदलने के लिए, हमें पहले OrderedDict को संग्रह मॉड्यूल से आयात करना होगा।
>>> from collections import OrderedDict >>> r=OrderedDict([('name', 'Lata'), ('age', '22'), ('marks', '45')]) >>> dict(r) {'name': 'Lata', 'age': '22', 'marks': '45'}
इस लेख में csv मॉड्यूल की विशेषताओं के बारे में बताया गया है।