2010-06-21 5 views
2

Je suis à la recherche de bonnes pratiques en matière de gestion des fichiers csv et tab délimités.Nouvelles lignes dans une sortie délimitée par des tabulations ou une virgule délimitée

Pour les fichiers CSV, je suis déjà en train de faire du formatage si une valeur contient une virgule ou un double guillemet mais que se passe-t-il si la valeur contient un nouveau caractère de ligne? Devrais-je laisser la nouvelle ligne intacte et envelopper la valeur dans des guillemets doubles + échapper les guillemets doubles dans la valeur?

Même question pour les fichiers délimités par des tabulations. Je suppose que la réponse serait très similaire sinon identique.

Répondre

1

Habituellement, vous gardez \n inchangé tout en exploitant le fait que le caractère de nouvelle ligne sera inclus dans une chaîne " ". Cela ne crée pas d'ambiguïtés mais c'est vraiment moche si vous devez jeter un oeil au fichier en utilisant un texteur normal.

Mais c'est comme ça que vous devriez le faire puisque vous n'échappez à rien à l'intérieur d'une chaîne dans un CSV à l'exception du guillemet lui-même.

+0

merci pour la réponse rapide! c'est ce que je pensais que je voulais juste vérifier avec quelqu'un d'autre pour s'assurer –

0

@Jack a raison, votre meilleur pari est de garder le \n inchangé, puisque vous l'attendez entre guillemets si c'est le cas.

Comme avec la plupart des choses, je pense que la cohérence est la clé. Autant que je sache, vos valeurs doivent seulement être entre guillemets si elles couvrent plusieurs lignes, contiennent des virgules ou contiennent des guillemets. Dans certaines implémentations que j'ai vu, toutes les valeurs sont échappées et double-citées, car cela simplifie l'algorithme d'analyse (il n'est jamais question d'échappement et de double-citation, et inversement en lisant le CSV).

Ce n'est pas la solution la plus optimisée pour l'espace, mais la lecture et l'écriture du fichier sont une affaire banale, à la fois pour votre propre bibliothèque et pour d'autres qui pourraient en consommer à l'avenir.

Questions connexes