Rumah >pembangunan bahagian belakang >Golang >Mengapa kod Go saya menghasilkan petikan tambahan apabila menulis rentetan petikan pada fail CSV menggunakan `pengekodan/csv`?
Dalam coretan kod ini, matlamatnya adalah untuk menulis data ke dalam fail CSV, memastikan rentetan yang dipetik dalam data dilepaskan dengan betul. Walau bagaimanapun, CSV yang terhasil mengandungi petikan tambahan, yang membawa kepada ketidakkonsistenan.
<code class="go">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() }</code>
Output yang dijangkakan untuk rentetan yang dipetik ialah:
[Unquoted string Cr@zy text with , and \ and " etc] [Quoted string "Cr@zy text with , and \ and \" etc"]
Walau bagaimanapun, output sebenar mengandungi petikan tambahan:
Unquoted string,"Cr@zy text with , and \ and "" etc" Quoted string,"""Cr@zy text with , and \ and \"" etc"""
Penyelesaian
Kod tidak perlu risau tentang melepaskan petikan berganda kerana pembaca CSV melepaskannya secara automatik. Oleh itu, penyelesaiannya adalah untuk mengalih keluar petikan berganda tambahan semasa menulis rentetan yang dipetik.Kod Diubahsuai
Output Dikemas KiniDengan perubahan ini, rentetan petikan kini dilupuskan dengan betul dan petikan tambahan dialih keluar.
<code class="go">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) }</code>
Atas ialah kandungan terperinci Mengapa kod Go saya menghasilkan petikan tambahan apabila menulis rentetan petikan pada fail CSV menggunakan `pengekodan/csv`?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!