इस कोड स्निपेट में, लक्ष्य एक सीएसवी फ़ाइल में डेटा लिखना है, यह सुनिश्चित करना है कि उद्धृत स्ट्रिंग्स भीतर हैं डेटा ठीक से बच गया है। हालाँकि, परिणामी CSV में अतिरिक्त उद्धरण शामिल हैं, जिससे विसंगतियाँ पैदा होती हैं।
package main
import (
"encoding/csv"
"fmt"
"log"
"os"
)
func main() {
f, err := os.Create("test.csv")
if err != nil {
log.Fatal(err)
}
defer f.Close()
w := csv.NewWriter(f)
record := []string{"Unquoted string", "Cr@zy text with , and \\ and \" etc"}
w.Write(record)
record = []string{"Quoted string", fmt.Sprintf("%q", "Cr@zy text with , and \\ and \" etc")}
w.Write(record)
w.Flush()
}
उद्धृत स्ट्रिंग के लिए अपेक्षित आउटपुट है:
[Unquoted string Cr@zy text with , and \ and " etc] [Quoted string "Cr@zy text with , and \\ and \" etc"]
हालांकि, वास्तविक आउटपुट में अतिरिक्त उद्धरण शामिल हैं:
Unquoted string,"Cr@zy text with , and \ and "" etc" Quoted string,"""Cr@zy text with , and \\ and \"" etc"""
अतिरिक्त उद्धरणों को समझना
में अतिरिक्त उद्धरण उद्धृत स्ट्रिंग सीएसवी मानक का पालन करने का परिणाम है, जिसके लिए दोहरे उद्धरण चिह्नों को दो दोहरे उद्धरण चिह्नों के रूप में निकालने की आवश्यकता होती है। डेटा के भीतर वास्तविक दोहरे उद्धरण चिह्नों और रिकॉर्ड परिसीमन के लिए उपयोग किए जाने वाले उद्धरणों के बीच अंतर करना आवश्यक है।
Solution
कोड को दोहरे उद्धरण चिह्नों से बचने के बारे में चिंता करने की आवश्यकता नहीं है क्योंकि सीएसवी रीडर उन्हें स्वचालित रूप से हटा देता है। इसलिए, समाधान उद्धृत स्ट्रिंग लिखते समय अतिरिक्त दोहरे उद्धरण चिह्नों को हटाना है।
संशोधित कोड
for _, record := range [][]string{
{"Unquoted string", "Cr@zy text with , and \\ and \" etc"},
{"Quoted string", "Cr@zy text with , and \\ and \" etc"},
} {
record[1] = fmt.Sprintf("%q", record[1][1:len(record[1])-1])
w.Write(record)
}
अपडेटेड आउटपुट
Unquoted string,Cr@zy text with , and \ and " etc Quoted string,"Cr@zy text with , and \\ and \" etc"
इस परिवर्तन के साथ, उद्धृत स्ट्रिंग अब ठीक से बच गई है और अतिरिक्त उद्धरण हटा दिए गए हैं।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3