Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimanakah anda mengendalikan rentetan yang disebut dalam pengekodan CSV dengan pakej `pengekodan/csv` Go?

Bagaimanakah anda mengendalikan rentetan yang disebut dalam pengekodan CSV dengan pakej `pengekodan/csv` Go?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-10-27 09:13:30949semak imbas

How do you handle quoted strings in CSV encoding with Go's `encoding/csv` package?

Pengekodan CSV dalam Go: Mengendalikan Rentetan Dipetik

Dalam pakej pengekodan/csv Go, pengendalian rentetan yang disebut kadangkala boleh membawa kepada hasil yang tidak dijangka . Apabila menulis rekod CSV, adalah penting untuk memahami keperluan standard untuk pengekodan aksara khas, seperti petikan berganda.

Mengikut spesifikasi CSV, aksara petikan berganda dalam medan mesti dilepaskan menggunakan aksara petikan berganda kedua. Urutan melarikan diri ini diperlukan untuk alasan penghuraian.

Contoh:

<code class="go">import "encoding/csv"

record := []string{
    "Unquoted string",
    "Cr@zy text with , and \ and \" etc",
}

writer := csv.NewWriter(writer)
writer.Write(record)</code>

Kod di atas akan menulis rentetan dengan petikan berganda yang terlepas:

<code class="csv">Unquoted string
"Cr@zy text with , and \ and \" etc"</code>

Mengelakkan Petikan Tambahan:

Untuk mengelakkan sisipan petikan tambahan semasa membaca fail CSV, langkah berikut perlu diambil:

  • Apabila menulis rentetan yang dipetik, gunakan fmt.Sprintf("%q", rentetan) untuk melepaskan petikan berganda dengan betul.
  • Apabila membaca rentetan yang dipetik, pembaca CSV secara automatik menyahlepas petikan berganda, memastikan rentetan asal diperolehi .

Contoh Kod:

<code class="go">func writeCSV() {
    writer := csv.NewWriter(writer)
    s := "Cr@zy text with , and \ and \" etc"

    record := []string{
        "Unquoted string",
        "Quoted string",
        fmt.Sprintf("%q", s),
    }

    writer.Write(record)
}

func readCSV() {
    reader := csv.NewReader(reader)
    records, err := reader.ReadAll()

    for _, record := range records {
        // Printed records automatically have double quotes unescaped by the CSV reader.
        fmt.Println(record)
    }
}</code>

Output:

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

Atas ialah kandungan terperinci Bagaimanakah anda mengendalikan rentetan yang disebut dalam pengekodan CSV dengan pakej `pengekodan/csv` Go?. 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