"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > `एन्कोडिंग/सीएसवी` का उपयोग करके सीएसवी फ़ाइल में उद्धृत स्ट्रिंग लिखते समय मेरा गो कोड अतिरिक्त उद्धरण क्यों उत्पन्न करता है?

`एन्कोडिंग/सीएसवी` का उपयोग करके सीएसवी फ़ाइल में उद्धृत स्ट्रिंग लिखते समय मेरा गो कोड अतिरिक्त उद्धरण क्यों उत्पन्न करता है?

2024-11-12 को प्रकाशित
ब्राउज़ करें:985

Why does my Go code produce extra quotes when writing quoted strings to a CSV file using `encoding/csv`?

गो के एन्कोडिंग/सीएसवी का उपयोग करके उद्धृत स्ट्रिंग्स के लिए अजीब सीएसवी परिणाम

इस कोड स्निपेट में, लक्ष्य एक सीएसवी फ़ाइल में डेटा लिखना है, यह सुनिश्चित करना है कि उद्धृत स्ट्रिंग्स भीतर हैं डेटा ठीक से बच गया है। हालाँकि, परिणामी 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