CSV - Les champs non cotés n'autorisent pas \ r ou \ n (ligne 2)
En essayant d'analyser un fichier CSV, mais toujours le message d'erreur non cotées champs ne permettent pas de \r ou \n (ligne 2)..
J'ai trouvé ici à TELLEMENT de sujet similaire, où était une allusion à prendre les mesures suivantes:
CSV.open('file.csv', :row_sep => "\r\n") do |csv|
mais son, malheureusement, ne fonctionne pas moi... je ne peux pas modifier le fichier CSV, donc j'aurais besoin de fixer dans le code.
MODIFIER exemple de fichier CSV:
A;B;C
1234;...
Est-il un moyen de le faire?
Merci beaucoup!
source d'informationauteur user984621 | 2012-07-18
Vous devez vous connecter pour publier un commentaire.
Tout d'abord, vous devriez vous définissez des séparateurs de colonnes ';', puisque ce n'est pas la façon normale de fichiers CSV sont analysées. Cela a fonctionné pour moi:
De la 1.9.2 CSV documentation:
Solution la plus simple si le CSV a été touché ou enregistré par n'importe quel programme qui peut-être utilisé bizarre de mise en forme (par exemple Excel ou Tableur):
Pour moi, j'ai été importation LinkedIn CSV et obtenu l'erreur.
J'ai supprimé les lignes vides comme ceci:
Dans mon cas, j'ai eu à fournir de l'encodage, et une citation d'un char qui a été garantie de ne pas se produire dans les données
Une solution simple pour résoudre les mises en forme étrange causée par Excel est de copier et coller les données dans Google feuille de calcul, puis de le télécharger au format CSV.
Dans mon cas, la première ligne de la feuille de calcul/CSV a été un double-cité peu de texte d'introduction. L'erreur que j'ai eu était:
/Users/.../.rvm/rubis/ruby-2.3.0/lib/ruby/2.3.0/csv.rb:1880:dans " le bloc (2 niveaux) en quart de travail: non cotées champs ne permettent pas de \r ou \n (ligne 1). (CSV::MalformedCSVError)
J'ai supprimé le commentaire avec " les caractères jusqu'à la .csv n'avait que la .des données au format csv, enregistré, et mon programme a travaillé avec aucune erreur.
Si vous avez à traiter avec les fichiers provenant d'Excel avec des retours à la ligne dans les cellules, il est aussi une solution.
Le gros inconvénient de cette voie, qu'aucun des points-virgules ou pas de guillemets dans les chaînes de caractères sont autorisés.
- Je choisir pour aller avec n'des points-virgules
Pour moi la solution fonctionne très bien, si vous travaillez avec des fichiers volumineux, vous pouvez rencontrer des problèmes avec elle.
Si vous voulez aller avec pas de guillemets il suffit de remplacer les points-virgules dans les regex avec des guillemets.