Der folgende Code funktionierte bis heute, als ich von einem Windows-Computer importierte und diesen Fehler bekam:
Zeilenumbruchzeichen im nicht zitierten Feld - Müssen Sie die Datei im Universal-Zeilenumbruchmodus öffnen?
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]
Wie kann ich dieses Problem beheben?
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)
Antworten:
Es ist gut, die CSV-Datei selbst zu sehen, aber dies könnte für Sie funktionieren. Probieren Sie es aus und ersetzen Sie:
mit:
Oder öffnen Sie eine Datei mit
universal newline mode
und übergeben Sie sie ancsv.reader
:Oder verwenden Sie
splitlines()
wie folgt:quelle
get_row_count()
und inget_column_count()
- zu prüfen , in die Datei zu lesen__init__
und erinnertdata
inself.data
, dann ist es in anderen Methoden.Mir ist klar, dass dies ein alter Beitrag ist, aber ich bin auf dasselbe Problem gestoßen und sehe nicht die richtige Antwort, also werde ich es versuchen
Python-Fehler:
Verursacht durch den Versuch, Macintosh-CSV-Dateien (vor OS X formatiert) zu lesen. Dies sind Textdateien, die CR als Zeilenende verwenden. Wenn Sie MS Office verwenden, stellen Sie sicher, dass Sie entweder das einfache CSV- Format oder CSV (MS-DOS) auswählen . Verwenden Sie CSV (Macintosh) nicht als Sicherungstyp.
Meine bevorzugte EOL-Version wäre LF (Unix / Linux / Apple), aber ich glaube nicht, dass MS Office die Option zum Speichern in diesem Format bietet.
quelle
Speichern Sie unter Mac OS X Ihre CSV-Datei im Format "Windows Comma Separated (.csv)".
quelle
Wenn dir das auf dem Mac passiert (wie mir):
CSV (MS-DOS Comma-Separated)
Führen Sie das folgende Skript aus
quelle
Versuchen
dos2unix
Sie zuerst, unter Windows importierte Dateien auszuführenquelle
\x0d
(ProDOS) Zeilenenden zu\x0a
(UNIX) Zeilenenden.Dies ist ein Fehler, mit dem ich konfrontiert war. Ich hatte eine CSV-Datei in MAC OSX gespeichert.
Speichern Sie es beim Speichern als "Windows Comma Separated Values (.csv)", wodurch das Problem behoben wurde.
quelle
Dies funktionierte für mich unter OSX.
quelle
Ich weiß, dass dies seit einiger Zeit beantwortet wurde, aber mein Problem nicht gelöst hat. Aufgrund einiger anderer Komplikationen verwende ich DictReader und StringIO für meine CSV-Lesung. Ich konnte das Problem einfacher lösen, indem ich Trennzeichen explizit ersetzte:
Könnte für enorme CSV-Dateien nicht sinnvoll sein, hat aber für meinen Anwendungsfall gut funktioniert.
quelle
Alternative und schnelle Lösung: Ich hatte den gleichen Fehler. Ich habe die "seltsame" CSV-Datei in GNUMERIC auf meinem Lubuntu-Computer erneut geöffnet und die Datei als CSV-Datei exportiert. Dies hat das Problem behoben.
quelle