следующий код работал до сегодняшнего дня, когда я импортировал с компьютера Windows и получил эту ошибку:
символ новой строки в поле без кавычек - нужно ли открывать файл в универсальном режиме новой строки?
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]
Как я могу исправить эту проблему?
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)
Ответы:
Было бы хорошо увидеть сам файл csv, но это может сработать для вас, попробуйте, замените:
с участием:
Или откройте файл с помощью
universal newline mode
и передайте егоcsv.reader
, например:Или используйте
splitlines()
вот так:источник
get_row_count()
иget_column_count()
- рассмотреть вопрос о чтении файла в__init__
и помните ,data
вself.data
, а затем использовать его в других методах.Я понимаю, что это старый пост, но я столкнулся с той же проблемой и не вижу правильного ответа, поэтому я попробую
Ошибка Python:
Вызвано попыткой чтения файлов CSV Macintosh (отформатированных до OS X). Это текстовые файлы, в которых в конце строки используется CR. При использовании MS Office убедитесь , что вы выбираете либо обычный CSV формат или CSV (MS-DOS) . Не используйте CSV (Macintosh) в качестве типа для сохранения.
Я предпочитаю версию EOL LF (Unix / Linux / Apple), но я не думаю, что MS Office предоставляет возможность сохранения в этом формате.
источник
Для Mac OS X сохраните файл CSV в формате «Windows Comma Separated (.csv)».
источник
Если это произойдет с вами на Mac (как это случилось со мной):
CSV (MS-DOS Comma-Separated)
Запустите следующий скрипт
источник
Попробуйте
dos2unix
сначала запустить импортированные файлы Windowsисточник
\x0d
окончаний строк (ProDOS) на окончания строк\x0a
(UNIX).Это ошибка, с которой я столкнулся. Я сохранил файл .csv в MAC OSX.
При сохранении сохраните его как «Значения, разделенные запятыми Windows (.csv)», что устранило проблему.
источник
Это сработало для меня на OSX.
источник
Я знаю, что на этот вопрос уже довольно давно ответили, но не решаю мою проблему. Я использую DictReader и StringIO для чтения csv из-за некоторых других сложностей. Мне удалось решить проблему проще, явно заменив разделители:
Может быть неприемлемым для огромных файлов CSV, но хорошо сработал для моего варианта использования.
источник
Альтернативное и быстрое решение: я столкнулся с той же ошибкой. Я повторно открыл "странный" файл csv в GNUMERIC на моем компьютере с lubuntu и экспортировал файл как файл csv. Это устранило проблему.
источник