Go (Golang) में CSV के साथ कार्य: encoding/csv पैकेज के लिए पूर्ण गाइड

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

Go में encoding/csv पैकेज: CSV फ़ाइलों के साथ कार्य करने के लिए पूर्ण गाइड



CSV (Comma-Separated Values) प्रारूप सारणीबद्ध डेटा के आदान-प्रदान के सबसे लोकप्रिय तरीकों में से एक बना हुआ है। Go (Golang) में इस प्रारूप के साथ कार्य करने के लिए एक मानक पैकेज encoding/csv मौजूद है, जो CSV फ़ाइलों को पढ़ने और लिखने के लिए एक सुविधाजनक और कुशल इंटरफ़ेस प्रदान करता है। इस लेख में, हम बुनियादी संचालन से लेकर उन्नत तकनीकों तक, पैकेज की सभी क्षमताओं का विस्तार से विश्लेषण करेंगे।



encoding/csv पैकेज की मुख्य विशेषताएं

encoding/csv पैकेज Go की मानक लाइब्रेरी का हिस्सा है और इसे अतिरिक्त निर्भरताएँ स्थापित करने की आवश्यकता नहीं है। यह समर्थन करता है:

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


Go में CSV फ़ाइलें पढ़ना

CSV फ़ाइल पढ़ने के लिए csv.Reader संरचना का उपयोग किया जाता है। आइए एक बुनियादी उदाहरण देखें:



package main

import ( "encoding/csv" "fmt" "log" "os")

func main() { // CSV फ़ाइल खोलें file, err := os.Open("data.csv") if err != nil { log.Fatal("फ़ाइल खोलने में त्रुटि:", err) } defer file.Close()

// एक नया CSV रीडर बनाएं reader := csv.NewReader(file)

// सभी रिकॉर्ड एक साथ पढ़ें records, err := reader.ReadAll() if err != nil { log.Fatal("CSV पढ़ने में त्रुटि:", err) }

// डेटा प्रदर्शित करें for i, record := range records { fmt.Printf("पंक्ति %d: %v", i+1, record) }}


बड़ी फ़ाइलों का स्ट्रीम पढ़ना

बड़ी CSV फ़ाइलों (सैकड़ों मेगाबाइट या अधिक) को संसाधित करने के लिए पंक्ति-दर-पंक्ति पढ़ने की अनुशंसा की जाती है:



func readLargeCSV(filename string) error {    file, err := os.Open(filename)    if err != nil {        return err    }    defer file.Close()

reader := csv.NewReader(file) // हेडर छोड़ें header, err := reader.Read() if err != nil { return err } fmt.Println("हेडर:", header)

// पंक्ति दर पंक्ति पढ़ें lineCount := 0 for { record, err := reader.Read() if err != nil { break // फ़ाइल का अंत } // रिकॉर्ड संसाधित करें fmt.Printf("पंक्ति %d: %s | %s", lineCount+1, record[0], record[1]) lineCount++ } return nil}


CSV पार्सर को कॉन्फ़िगर करना

encoding/csv पैकेज पढ़ने के मापदंडों को लचीले ढंग से कॉन्फ़िगर करने की अनुमति देता है:

  • Comma — विभाजक वर्ण (डिफ़ॉल्ट रूप से अल्पविराम)
  • Comment — टिप्पणी वर्ण (इससे शुरू होने वाली पंक्तियों को अनदेखा किया जाता है)
  • FieldsPerRecord — रिकॉर्ड में अपेक्षित फ़ील्ड की संख्या
  • LazyQuotes — अनएस्केप्ड उद्धरण चिह्नों की अनुमति दें
  • TrimLeadingSpace — फ़ील्ड की शुरुआत से रिक्त स्थान हटाएं


func customCSVParser() {    file, _ := os.Open("custom.csv")    defer file.Close()

reader := csv.NewReader(file) reader.Comma = ';' // अर्धविराम का उपयोग करें reader.Comment = '#' // # वाली पंक्तियों को अनदेखा किया जाता है reader.TrimLeadingSpace = true reader.LazyQuotes = true

records, _ := reader.ReadAll() for _, record := range records { fmt.Println(record) }}


CSV प्रारूप में डेटा लिखना

लिखने के लिए csv.Writer संरचना का उपयोग किया जाता है। CSV फ़ाइल बनाने का उदाहरण:



func writeCSV(filename string) error {    file, err := os.Create(filename)    if err != nil {        return err    }    defer file.Close()

writer := csv.NewWriter(file) defer writer.Flush() // महत्वपूर्ण! बफर को फ़ाइल में फ्लश करें

// हेडर लिखें

अनुशंसाएँ