>백엔드 개발 >Golang >Go\의 `encoding/csv` 패키지는 CSV 파일을 쓰고 읽을 때 큰따옴표 이스케이프를 어떻게 처리합니까?

Go\의 `encoding/csv` 패키지는 CSV 파일을 쓰고 읽을 때 큰따옴표 이스케이프를 어떻게 처리합니까?

Barbara Streisand
Barbara Streisand원래의
2024-10-25 10:07:48847검색

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

Go의 인코딩/csv에서 CSV 큰따옴표 탈출

encoding/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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.