>  기사  >  백엔드 개발  >  Go\의 `encoding/csv` 패키지를 사용하여 CSV 인코딩에서 인용 문자열을 어떻게 처리합니까?

Go\의 `encoding/csv` 패키지를 사용하여 CSV 인코딩에서 인용 문자열을 어떻게 처리합니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-10-27 09:13:30949검색

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

Go의 CSV 인코딩: 인용 문자열 처리

Go의 인코딩/csv 패키지에서 인용 문자열을 처리하면 때때로 예상치 못한 결과가 발생할 수 있습니다. . CSV 레코드를 작성할 때 큰따옴표와 같은 특수 문자 인코딩에 대한 표준 요구 사항을 이해하는 것이 중요합니다.

CSV 사양에 따라 필드 내의 큰따옴표 문자는 두 번째 큰따옴표 문자를 사용하여 이스케이프해야 합니다. 이 이스케이프 시퀀스는 구문 분석을 위해 필요합니다.

예:

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

위 코드는 큰따옴표로 이스케이프된 문자열을 작성합니다.

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

추가 따옴표 방지:

CSV 파일을 읽을 때 추가 따옴표 삽입을 방지하려면 다음 단계를 수행해야 합니다.

  • 작성 시 인용된 문자열을 사용하려면 fmt.Sprintf("%q", string)를 사용하여 큰따옴표를 적절하게 이스케이프 처리하세요.
  • 따옴표 붙은 문자열을 읽을 때 CSV 리더는 자동으로 큰따옴표를 이스케이프 해제하여 원래 문자열을 얻도록 합니다. .

코드 예:

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

출력:

[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으로 문의하세요.