Heim  >  Artikel  >  Backend-Entwicklung  >  Wie geht das Paket „encoding/csv“ von Go mit dem Escapezeichen in doppelte Anführungszeichen beim Schreiben und Lesen von CSV-Dateien um?

Wie geht das Paket „encoding/csv“ von Go mit dem Escapezeichen in doppelte Anführungszeichen beim Schreiben und Lesen von CSV-Dateien um?

Barbara Streisand
Barbara StreisandOriginal
2024-10-25 10:07:48746Durchsuche

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

CSV-Doppel-Anführungszeichen-Escapezeichen in der Kodierung/CSV von Go

Bei der Arbeit mit CSV-Dateien in Go unter Verwendung des Kodierungs-/CSV-Pakets ist es wichtig, Folgendes zu tun Verstehen Sie, wie mit doppelten Anführungszeichen ("") umgegangen wird. Doppelte Anführungszeichen werden verwendet, um Zeichenfolgen einzuschließen, die Sonderzeichen wie Kommas enthalten, die andernfalls das CSV-Format zerstören können.

In Go ist es beim Schreiben in eine CSV-Datei wichtig, doppelte Anführungszeichen innerhalb von Zeichenfolgen zu maskieren. Das Paket „encoding/csv“ erledigt dies automatisch, indem es zusätzliche doppelte Anführungszeichen um alle doppelten Anführungszeichen in der Zeichenfolge einfügt. Dies ist Teil des CSV-Standards, der erfordert, dass doppelte Anführungszeichen für die Analysegenauigkeit maskiert werden.

Beispiel:

<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>

Wenn das Skript ausgeführt wird, erfolgt die Ausgabe Zeigt die in doppelte Anführungszeichen eingeschlossenen Zeichenfolgen an:

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

Beim Lesen aus der CSV-Datei entfernt das Paket „encoding/csv“ jedoch automatisch alle maskierten doppelten Anführungszeichen. Dies bedeutet, dass die Zeichenfolgen ohne zusätzliche doppelte Anführungszeichen korrekt analysiert werden.

Beispiel für eine Lesefunktion:

<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>

Wenn die Lesefunktion aufgerufen wird, werden Sie Folgendes tun siehe Ausgabe:

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

Dies zeigt, wie mit doppelten Anführungszeichen während Schreib- und Lesevorgängen umgegangen wird, um sicherzustellen, dass die Daten korrekt gespeichert und abgerufen werden.

Das obige ist der detaillierte Inhalt vonWie geht das Paket „encoding/csv“ von Go mit dem Escapezeichen in doppelte Anführungszeichen beim Schreiben und Lesen von CSV-Dateien um?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn