Rumah >pembangunan bahagian belakang >Golang >Bagaimanakah pakej `pengekodan/csv` Go mengendalikan pelarian petikan berganda semasa menulis dan membaca fail CSV?
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!