Les fichiers CSV avec des guillemet et une virgule caractères à l'intérieur des champs

J'ai une pile de fichiers CSV je veux analyser le problème, c'est la moitié de la ont guillemets utilisés comme les guillemets, et les virgules à l'intérieur du champ. Ils ne sont pas vraiment CSV, mais ils ont un nombre fixe de champs qui sont identifiables. Le dialecte=csv."excel" paramètre fonctionne parfaitement sur des fichiers avec les extra " et , de caractères à l'intérieur du champ.

Ces données est vieux/non pris en charge. Je suis en train d'essayer de pousser un peu de vie en elle.

par exemple

"AAAAA
AAAA
AAAA
AAAA","AAAAAAAA


AAAAAA
AAAAA "AAAAAA" AAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAA, AAAAA
AAAAAAAAA AAAAA AAAAAAAAAA
AAAAA, "AAAAA", AAAAAAAAA
AAAAAAAA AAAAAAAA
AAAAAAA
"

C'est le déclenchement de l'analyseur de fichier et renvoie une erreur _csv.Error: newline inside string. Je narrrowed à cet être le problème en supprimant les guillemets de l'intérieur de la 2e champ et le csv.module de lecteur de traite le fichier OK.

Certains champs sont multi-ligne - je ne sais pas si c'est important à savoir.

J'ai été farfouillé dans le dialecte de paramètres, et alors que je peux trouver "skipinitialspace", cela ne semble pas résoudre le problème.

Pour être clair, ce n'est pas valide 'CSV', ses objets de données qui défilent sur un CSV structure, mais qui ont , et des " caractères à l'intérieur de l'essai sur le terrain.

La lineterminator est \x0d\x0a

J'ai essayé un certain nombre de va à différentes permuations de l'apostrophe et le citant variable dans le dialecte du module, mais je ne peux pas obtenir ce à analyser correctement.

Je ne peux pas être certain qu'un ," ou ", la combinaison n'existe que sur les limites du champ.

Ce problème n'existe que pour l'une (la dernière) de plusieurs champs dans le fichier, et il y a plusieurs milliers de fichiers.

bon CSV utilise deux fois de suite, les guillemets ("") pour échapper à une citation d'un personnage dans une cité de terrain. Alternativement, le terrain pourrait être non cotées et aucune fuite n'est nécessaire, bien que les virgules et les retours à la ligne ne peut pas apparaître dans un tel domaine. Les guillemets simples comme ce ne sont pas normalement valide. Est-il possible de modifier les options de la source de vos données au format CSV, pour mieux se conformer aux attentes de la plupart des autres CSV lecteurs (y compris python).
J'ai hérité de données, et il y a beaucoup d'elle... Donc je ne peux pas faire autre chose que de construire un analyseur syntaxique qui peut chercher en dehors de nouveau.
Les fichiers sont pas endommagés, son mal/mal structuré comme un CSV. "J'ai hérité de données" est l'exact 'excuse' - c'est juste ce qui se passe. Les données sont anciennes ou abandonnées, et je veux ressusciter.
S'il vous PLAÎT (si vous souhaitez une aide réelle) de modifier une question à inclure de manière cohérente TOUTES les informations vous avoir dribblé dans les commentaires en plus de ce codage est utilisé plus de savoir si la non-citation-doublé champ(s) affiche(s) en constante colonnes de plus qu'est-ce que le séparateur de ligne (\n ou \r\n) plus que d'une virgule, \r, \n apparaissent dans les colonnes. Que vos données sont "non-partageable", puis masque (et compresser) par substitution de "Un" pour chaque période de chaîne de caractères alphabétiques -- si cela affecte l'analyse de vos données est absolument peluche -- et de publier un vaste échantillon de quelque part.
a noté, et édité. Je vous remercie.

OriginalL'auteur Jay Gattuso | 2012-02-10