गो में एन्कोडिंग/सीएसवी पैकेज उद्धृत स्ट्रिंग्स के प्रबंधन के संबंध में बहुत बहस का विषय रहा है सीएसवी फाइलों में. इस लेख का उद्देश्य एक सीएसवी फ़ाइल में उद्धृत स्ट्रिंग लिखते समय एक उपयोगकर्ता द्वारा अतिरिक्त उद्धरणों का सामना करने वाली एक दिलचस्प घटना की खोज करके इस मुद्दे पर प्रकाश डालना है।
उपयोगकर्ता द्वारा प्रदान की गई समस्या को स्पष्ट करने के लिए निम्नलिखित कोड स्निपेट:
package main
import (
"encoding/csv"
"fmt"
"os"
)
func main() {
// Create a file to write CSV data
f, err := os.Create("./test.csv")
if err != nil {
log.Fatal("Error: %s", err)
}
defer f.Close()
// Initialize a CSV writer
w := csv.NewWriter(f)
// Unquoted string
var record []string
record = append(record, "Unquoted string")
s := "Cr@zy text with , and \\ and \" etc"
record = append(record, s)
fmt.Println(record)
w.Write(record)
// Quoted string
record = make([]string, 0)
record = append(record, "Quoted string")
s = fmt.Sprintf("%q", s)
record = append(record, s)
fmt.Println(record)
w.Write(record)
// Flush the writer to save the changes
w.Flush()
}
इस कोड को चलाने पर, उद्धृत स्ट्रिंग के लिए अपेक्षित आउटपुट इस प्रकार होगा:
[Quoted string "Cr@zy text with , and \\ and \" etc"]
हालाँकि, वास्तव में प्राप्त आउटपुट था:
[Quoted string,"""Cr@zy text with , and \\ and \"" etc"""]
उद्धृत स्ट्रिंग के चारों ओर अतिरिक्त उद्धरणों की उपस्थिति हैरान करने वाली थी और आगे की जांच की आवश्यकता थी।
समस्या की जड़ में निहित है सीएसवी (अल्पविराम से अलग किए गए मान) फ़ाइल प्रारूप मानक के अनुसार, किसी फ़ील्ड के भीतर उपयोग किए जाने वाले दोहरे उद्धरण चिह्नों को दो दोहरे उद्धरण चिह्नों ("") द्वारा दर्शाया जाना चाहिए। यह पार्सिंग प्रयोजनों के लिए चरित्र से बचने का एक साधन है। अलग किए गए मान - विकिपीडिया](https://en.wikipedia.org/wiki/Comma-separated_values)
A (double) quote character in a field must be represented by two (double) quote characters.CSV लेखन पर प्रभाव
A (double) quote character in a field must be represented by two (double) quote characters.जबकि अतिरिक्त उद्धरण सीएसवी एन्कोडिंग विनिर्देशों के अनुसार जोड़े जाते हैं, वैकल्पिक एन्कोडिंग प्रारूप का चयन करके उनसे बचा जा सकता है। वैकल्पिक रूप से, यदि आप सीएसवी मानक का कड़ाई से पालन करना चाहते हैं, तो आप प्रत्येक एकल दोहरे उद्धरण को दोहरे दोहरे उद्धरण के साथ बदलकर स्ट्रिंग को मैन्युअल रूप से हेरफेर कर सकते हैं, जैसे:
निष्कर्ष
गो के एन्कोडिंग/सीएसवी में सीएसवी फाइलों में उद्धृत स्ट्रिंग लिखते समय देखा गया अनोखा व्यवहार पैकेज को सीएसवी मानक के लिए ही जिम्मेदार ठहराया जा सकता है, जिसे पार्सिंग के लिए दोहरे उद्धरण चिह्नों से बचने की आवश्यकता होती है, इस अंतर्निहित तंत्र को समझकर, आप या तो वैकल्पिक एन्कोडिंग प्रारूप चुन सकते हैं या अपने वांछित परिणाम प्राप्त करने के लिए मैन्युअल रूप से स्ट्रिंग एस्केपिंग को संभाल सकते हैं।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3