le code suivant a fonctionné jusqu'à aujourd'hui, lorsque j'ai importé à partir d'une machine Windows et que j'ai obtenu cette erreur:
caractère de nouvelle ligne vu dans le champ sans guillemets - devez-vous ouvrir le fichier en mode universel-nouvelle ligne?
import csv
class CSV:
def __init__(self, file=None):
self.file = file
def read_file(self):
data = []
file_read = csv.reader(self.file)
for row in file_read:
data.append(row)
return data
def get_row_count(self):
return len(self.read_file())
def get_column_count(self):
new_data = self.read_file()
return len(new_data[0])
def get_data(self, rows=1):
data = self.read_file()
return data[:rows]
Comment puis-je résoudre ce problème?
def upload_configurator(request, id=None):
"""
A view that allows the user to configurator the uploaded CSV.
"""
upload = Upload.objects.get(id=id)
csvobject = CSV(upload.filepath)
upload.num_records = csvobject.get_row_count()
upload.num_columns = csvobject.get_column_count()
upload.save()
form = ConfiguratorForm()
row_count = csvobject.get_row_count()
colum_count = csvobject.get_column_count()
first_row = csvobject.get_data(rows=1)
first_two_rows = csvobject.get_data(rows=5)
Réponses:
Ce sera bien de voir le fichier csv lui-même, mais cela pourrait fonctionner pour vous, essayez-le, remplacez:
avec:
Ou ouvrez un fichier avec
universal newline mode
et transmettez-le àcsv.reader
, comme:Ou, utilisez
splitlines()
, comme ceci:la source
get_row_count()
et inget_column_count()
- envisagez de lire le fichier__init__
et de vousdata
en souvenirself.data
, puis utilisez-le dans d'autres méthodes.Je me rends compte qu'il s'agit d'un ancien message, mais j'ai rencontré le même problème et je ne vois pas la bonne réponse, je vais donc essayer
Erreur Python:
Causé par une tentative de lecture de fichiers CSV Macintosh (pré-formatés OS X). Ce sont des fichiers texte qui utilisent CR pour la fin de la ligne. Si vous utilisez MS Office, assurez-vous de sélectionner le format CSV ordinaire ou CSV (MS-DOS) . N'utilisez pas CSV (Macintosh) comme type d'enregistrement.
Ma version EOL préférée serait LF (Unix / Linux / Apple), mais je ne pense pas que MS Office offre la possibilité d'enregistrer dans ce format.
la source
Sous Mac OS X, enregistrez votre fichier CSV au format «Windows Comma Separated (.csv)».
la source
Si cela vous arrive sur mac (comme pour moi):
CSV (MS-DOS Comma-Separated)
Exécutez le script suivant
la source
Essayez d'abord d'exécuter
dos2unix
sur vos fichiers importés Windowsla source
\x0d
fins de ligne (ProDOS) aux fins de ligne\x0a
(UNIX).C'est une erreur que j'ai rencontrée. J'avais enregistré le fichier .csv sous MAC OSX.
Lors de l'enregistrement, enregistrez-le sous «Valeurs séparées par des virgules Windows (.csv)», ce qui a résolu le problème.
la source
Cela a fonctionné pour moi sur OSX.
la source
Je sais que cela a été répondu depuis un certain temps mais pas résoudre mon problème. J'utilise DictReader et StringIO pour ma lecture csv en raison d'autres complications. J'ai pu résoudre le problème plus simplement en remplaçant explicitement les délimiteurs:
Peut-être pas raisonnable pour d'énormes fichiers CSV, mais a bien fonctionné pour mon cas d'utilisation.
la source
Solution alternative et rapide: j'ai fait face à la même erreur. J'ai rouvert le fichier csv "wierd" dans GNUMERIC sur ma machine lubuntu et exporté le fichier en tant que fichier csv. Cela a corrigé le problème.
la source