Heim  >  Artikel  >  Backend-Entwicklung  >  Wie gehen Sie mit in Anführungszeichen gesetzten Zeichenfolgen bei der CSV-Kodierung mit dem Paket „encoding/csv“ von Go um?

Wie gehen Sie mit in Anführungszeichen gesetzten Zeichenfolgen bei der CSV-Kodierung mit dem Paket „encoding/csv“ von Go um?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-10-27 09:13:30949Durchsuche

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

CSV-Codierung in Go: Umgang mit Strings in Anführungszeichen

Im Codierungs-/CSV-Paket von Go kann der Umgang mit Strings in Anführungszeichen manchmal zu unerwarteten Ergebnissen führen . Beim Schreiben von CSV-Datensätzen ist es wichtig, die Anforderungen des Standards für die Kodierung von Sonderzeichen wie doppelten Anführungszeichen zu verstehen.

Gemäß der CSV-Spezifikation müssen doppelte Anführungszeichen innerhalb eines Felds durch ein zweites doppeltes Anführungszeichen maskiert werden. Diese Escape-Sequenz ist aus Analysegründen erforderlich.

Beispiel:

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

Der obige Code schreibt eine Zeichenfolge mit doppelten Anführungszeichen mit Escapezeichen:

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

Vermeiden zusätzlicher Anführungszeichen:

Um das Einfügen zusätzlicher Anführungszeichen beim Lesen einer CSV-Datei zu vermeiden, sollten die folgenden Schritte unternommen werden:

  • Beim Schreiben In Anführungszeichen gesetzte Zeichenfolgen verwenden Sie fmt.Sprintf("%q", string), um doppelte Anführungszeichen ordnungsgemäß zu maskieren.
  • Beim Lesen von in Anführungszeichen gesetzten Zeichenfolgen entfernt der CSV-Reader automatisch die doppelten Anführungszeichen und stellt so sicher, dass die ursprüngliche Zeichenfolge erhalten wird .

Codebeispiel:

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

Ausgabe:

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

Das obige ist der detaillierte Inhalt vonWie gehen Sie mit in Anführungszeichen gesetzten Zeichenfolgen bei der CSV-Kodierung mit dem Paket „encoding/csv“ von Go 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