542 votes

Existe-t-il un moyen d'inclure des virgules dans des colonnes CSV sans casser le formatage ?

J'ai un CSV à deux colonnes avec un nom et un numéro. Certains noms de personnes utilisent des virgules, par exemple Joe Blow, CFA. Cette virgule rompt le format CSV, puisqu'elle est interprétée comme une nouvelle colonne.

Je me suis renseigné et la prescription la plus courante semble être de remplacer ce caractère, ou de remplacer le délimiteur, par une nouvelle valeur (par ex. this|that|the, other ).

J'aimerais vraiment conserver le séparateur à virgule (je sais qu'Excel prend en charge d'autres délimiteurs, mais d'autres interprètes peuvent ne pas le faire). J'aimerais également conserver la virgule dans le nom, comme suit Joe Blow| CFA a l'air assez ridicule.

Existe-t-il un moyen d'inclure des virgules dans des colonnes CSV sans rompre le formatage, par exemple en les échappant ?

0voto

mathengineer Points 98

Les doubles guillemets n'ont pas fonctionné pour moi, cela a fonctionné pour moi \" . Si vous souhaitez placer des guillemets doubles comme exemple, vous pouvez définir \"\" .

Vous pouvez élaborer des formules, par exemple :

fprintf(strout, "\"=if(C3=1,\"\"\"\",B3)\"\n");

sera écrit en csv :

\=IF(C3=1,"",B3)

0voto

Squibly Points 49

Une méthode C# pour échapper aux caractères de délimitation et aux guillemets dans le texte d'une colonne. Elle devrait suffire à garantir que votre fichier csv n'est pas altéré.

private string EscapeDelimiter(string field)
    {
        if (field.Contains(yourEscapeCharacter))
        {
            field = field.Replace("\"", "\"\"");
            field = $"\"{field}\"";
        }

        return field;
    }

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X