Go:
CSV के साथ काम करना

कैसे:

Go में CSV फाइलों के साथ काम करना इसके स्टैण्डर्ड लाइब्रेरी, encoding/csv की बदौलत सरल है। नीचे CSV फाइलों को पढ़ने और लिखने का प्राइमर है।

एक CSV फाइल पढ़ना

एक CSV फाइल से पढ़ने के लिए, आप पहले os.Open का उपयोग करके फाइल खोलते हैं, फिर csv.NewReader के साथ एक नया CSV रीडर बनाते हैं।

package main

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

func main() {
    file, err := os.Open("data.csv")
    if err != nil {
        panic(err)
    }
    defer file.Close()

    reader := csv.NewReader(file)
    records, err := reader.ReadAll()
    if err != nil {
        panic(err)
    }

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

यह कोड स्निपेट data.csv से सभी रेकॉर्ड्स को पढ़ेगा और उन्हें प्रिंट करेगा। प्रत्येक रेकॉर्ड फील्ड्स का स्लाइस होता है।

एक CSV फाइल में लिखना

लिखने के लिए, आप csv.NewWriter और कई या एकल CSV रेकॉर्ड्स को लिखने के लिए क्रमश: writer.WriteAll या writer.Write का उपयोग करते हैं।

package main

import (
    "encoding/csv"
    "os"
)

func main() {
    file, err := os.Create("output.csv")
    if err != nil {
        panic(err)
    }
    defer file.Close()

    writer := csv.NewWriter(file)
    defer writer.Flush()

    records := [][]string{
        {"Name", "Age", "City"},
        {"John Doe", "30", "New York"},
        {"Jane Doe", "27", "Los Angeles"},
    }

    if err := writer.WriteAll(records); err != nil {
        panic(err)
    }
}

यह output.csv नामक फाइल बनाएगा जिसमें प्रदान किए गए रेकॉर्ड्स होंगे। हमेशा लेखक को फ्लश करना याद रखें ताकि सभी बफर्ड डेटा फाइल में लिखा जाए।

गहराई में

Go encoding/csv पैकेज CSV फाइलों को पढ़ने और लिखने के लिए मजबूत समर्थन प्रदान करता है लेकिन इसे सरलता को ध्यान में रखकर डिज़ाइन किया गया है, जिसका अर्थ है कि यह डेलिमिटर्स का ऑटो-डिटेक्शन, उद्धरणों से निपटना या फील्ड्स में एम्बेडेड लाइन ब्रेक्स के बिना मैन्युअल हैंडलिंग के अधिक जटिल परिदृश्यों को संभालता नहीं है।

ऐतिहासिक रूप से, प्रोग्रामिंग भाषाओं में CSV हैंडलिंग अक्सर इन जटिलताओं के कारण कठिनाई भरी होती है, लेकिन Go की स्टैण्डर्ड लाइब्रेरी इन मुद्दों को अधिकतर सरलीकरण करती है, जिससे developers CSV डेटा के साथ आपेक्षिक आसानी से काम कर सकते हैं। हालांकि, अधिक जटिल CSV मैनिप्युलेशन के लिए, तृतीय पक्ष लाइब्रेरीज़ जैसे कि gocsv या मैन्युअली पार्सिंग संभालना आवश्यक हो सकता है।

Go के csv पैकेज का एक उल्लेखनीय पहलू इसका समर्थन है विशेष अल्पविराम (डेलीमिटर) निर्दिष्ट करने के लिए, जो इसे TSV (तब-सेपरेटेड वैल्यूज़) के रूपांतरों जैसे CSV फाइलों के साथ निर्बाध रूप से काम करने में सक्षम बनाता है। हालांकि, जब अत्यंत अनियमित या मानक रहित CSV फाइलों से निपटना हो, Go प्रोग्रामर्स को मौजूदा csv रीडर या राइटर कार्यान्वयनों का विस्तार करना पड़ सकता है।

जबकि Go की CSV हैंडलिंग क्षमताएं सामान्य उद्देश्यों के लिए मजबूत हैं, डेटा विज्ञान या जटिल डेटा ट्रांसफॉर्मेशन कार्यों जैसे तीव्र डेटा मैनिप्युलेशन की आवश्यकता वाले अनुप्रयोगों के लिए, प्रोग्रामर्स विशिष्ट डेटा प्रोसेसिंग पैकेज या इन कार्यों के लिए बेहतर अनुकूलित अन्य भाषाओं की ओर देख सकते हैं, जैसे कि Python इसके pandas लाइब्रेरी के साथ। फिर भी, सीधे-सादे CSV पढ़-लिख संचालनों के लिए, Go की स्टैण्डर्ड लाइब्रेरी अपनी कार्यक्षमता और सरलता के लिए उल्लेखनीय है।