Citation double CSV s'échappant dans le codage/csv de Go
Lorsque vous travaillez avec des fichiers CSV dans Go à l'aide du package encoding/csv, il est crucial de comprendre comment les guillemets doubles ("") sont gérés. Les guillemets doubles sont utilisés pour entourer des chaînes contenant des caractères spéciaux tels que des virgules, qui peuvent autrement casser le format CSV.
Dans Go, lors de l'écriture dans un fichier CSV, il est important d'échapper les guillemets doubles dans les chaînes. Le package encoding/csv le fait automatiquement, en ajoutant des guillemets doubles supplémentaires autour des guillemets doubles dans la chaîne. Cela fait partie de la norme CSV, qui nécessite que les guillemets doubles soient échappés pour garantir la précision de l'analyse.
Exemple :
<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>
Lorsque le script s'exécute, la sortie sera afficher les chaînes entourées de guillemets doubles :
[Unquoted string Cr@zy text with , and \ and " etc] [Quoted string "Cr@zy text with , and \ and \" etc"]
Cependant, lors de la lecture à partir du fichier CSV, le package encoding/csv supprime automatiquement les guillemets doubles échappés. Cela signifie que les chaînes seront analysées correctement, sans guillemets doubles supplémentaires.
Exemple de fonction de lecture :
<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>
Lorsque la fonction de lecture est appelée, vous voir le résultat :
[Unquoted string Cr@zy text with , and \ and " etc] [Quoted string Cr@zy text with , and \ and " etc]
Cela montre comment les guillemets doubles sont gérés lors des opérations d'écriture et de lecture, garantissant que les données sont à la fois stockées et récupérées correctement.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!