ホームページ  >  記事  >  バックエンド開発  >  Go の「encoding/csv」パッケージは、CSV ファイルの書き込みおよび読み取り時に二重引用符のエスケープをどのように処理しますか?

Go の「encoding/csv」パッケージは、CSV ファイルの書き込みおよび読み取り時に二重引用符のエスケープをどのように処理しますか?

Barbara Streisand
Barbara Streisandオリジナル
2024-10-25 10:07:48746ブラウズ

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

Go のエンコーディング/csv での CSV 二重引用符のエスケープ

エンコーディング/csv パッケージを使用して Go で CSV ファイルを操作する場合、次のことが重要です。二重引用符 ("") がどのように処理されるかを理解してください。二重引用符は、コンマなどの特殊文字を含む文字列を囲むために使用されます。二重引用符を使用すると、CSV 形式が壊れる可能性があります。

Go では、CSV ファイルに書き込むときに、文字列内の二重引用符文字をエスケープすることが重要です。エンコード/csv パッケージはこれを自動的に実行し、文字列内の二重引用符の周囲に二重引用符を追加します。これは CSV 標準の一部であり、解析を正確に行うために二重引用符をエスケープする必要があります。

例:

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

スクリプトを実行すると、出力は次のようになります。二重引用符で囲まれた文字列を表示します:

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

ただし、CSV ファイルから読み取る場合、エンコーディング/csv パッケージはエスケープされた二重引用符を自動的にエスケープ解除します。これは、文字列が二重引用符なしで正しく解析されることを意味します。

読み取り関数の例:

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

読み取り関数が呼び出されると、次のようになります。出力を参照してください:

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

これは、書き込みおよび読み取り操作中に二重引用符がどのように処理され、データが正しく保存および取得されるかを示しています。

以上がGo の「encoding/csv」パッケージは、CSV ファイルの書き込みおよび読み取り時に二重引用符のエスケープをどのように処理しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。