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

Barbara Streisand
Lepaskan: 2024-10-25 10:07:48
asal
762 orang telah melayarinya

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>
Salin selepas log masuk

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"]
Salin selepas log masuk

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>
Salin selepas log masuk

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]
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!