Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimanakah pakej `pengekodan/csv` Go mengendalikan pelarian petikan berganda semasa menulis dan membaca fail CSV?

Bagaimanakah pakej `pengekodan/csv` Go mengendalikan pelarian petikan berganda semasa menulis dan membaca fail CSV?

Barbara Streisand
Barbara Streisandasal
2024-10-25 10:07:48746semak imbas

How does Go's `encoding/csv` package handle double quote escaping when writing and reading CSV files?

Petikan Berganda CSV Melarikan diri dalam pengekodan/csv Go

Apabila bekerja dengan fail CSV dalam Go menggunakan pakej pengekodan/csv, adalah penting untuk memahami cara aksara petikan berganda ("") dikendalikan. Petikan berganda digunakan untuk melampirkan rentetan yang mengandungi aksara khas seperti koma, yang sebaliknya boleh memecahkan format CSV.

Dalam Go, apabila menulis ke fail CSV, adalah penting untuk melepaskan aksara petikan berganda dalam rentetan. Pakej pengekodan/csv melakukan ini secara automatik, menambah petikan berganda tambahan di sekeliling sebarang petikan berganda dalam rentetan. Ini adalah sebahagian daripada standard CSV, yang memerlukan petikan berganda untuk dilepaskan untuk ketepatan penghuraian.

Contoh:

<code class="go">import (
    "encoding/csv"
    "fmt"
    "os"
)

func main() {
    f, err := os.Create("./test.csv")
    if err != nil {
        log.Fatal("Error: %s", err)
    }
    defer f.Close()

    w := csv.NewWriter(f)

    s := "Cr@zy text with , and \ and \" etc"

    record := []string{
        "Unquoted string",
        s,
    }
    fmt.Println(record)
    w.Write(record)

    // Quote the string to escape double quotes
    record = []string{
        "Quoted string",
        fmt.Sprintf("%q", s),
    }
    fmt.Println(record)
    w.Write(record)

    w.Flush()
}</code>

Apabila skrip berjalan, output akan tunjukkan rentetan yang dikelilingi oleh petikan berganda:

[Unquoted string Cr@zy text with , and \ and " etc]
[Quoted string "Cr@zy text with , and \ and \" etc"]

Walau bagaimanapun, apabila membaca daripada fail CSV, pakej pengekodan/csv secara automatik tidak melepaskan sebarang petikan berganda yang terlepas. Ini bermakna rentetan akan dihuraikan dengan betul, tanpa sebarang petikan berganda tambahan.

Contoh Fungsi Baca:

<code class="go">func readCSV() {
    file, err := os.Open("./test.csv")
    defer file.Close()
    cr := csv.NewReader(file)
    records, err := cr.ReadAll()
    if err != nil {
        log.Fatal("Error: %s", err)
    }
    for _, record := range records {
        fmt.Println(record)
    }
}</code>

Apabila fungsi baca dipanggil, anda akan lihat output:

[Unquoted string Cr@zy text with , and \ and " etc]
[Quoted string Cr@zy text with , and \ and " etc]

Ini menunjukkan cara petikan berganda dikendalikan semasa operasi tulis dan baca, memastikan data disimpan dan diambil dengan betul.

Atas ialah kandungan terperinci Bagaimanakah pakej `pengekodan/csv` Go mengendalikan pelarian petikan berganda semasa menulis dan membaca fail CSV?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn