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() // महत्वपूर्ण! बफर को फ़ाइल में फ्लश करें
// हेडर लिखें पुस्तकालय में भी
PHP में प्राधिकरण और प्रमाणीकरण: उदाहरणों के साथ पूर्ण गाइड
C++ में HTML पार्सिंग: DOM और XPath के साथ काम करने के लिए लाइब्रेरी और उदाहरण
TypeScript में क्रिप्टोग्राफी: crypto-js लाइब्रेरी का अवलोकन
yaml-cpp C++: पूर्ण गाइड उदाहरणों के साथ
Java के लिए OAuth क्लाइंट: लाइब्रेरीज़ और कोड उदाहरणों की समीक्षा