CSV символ новой строки, замеченный в ошибке поля без кавычек



следующий код работал до сегодняшнего дня, когда я импортировал из окна машины и получил эту ошибку:



символ новой строки, видимый в поле без кавычек - вам нужно открыть файл в режиме universal-newline?



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)
563   7  

7 ответов:

будет хорошо увидеть сам файл csv, но это может сработать для вас, попробуйте, замените:

file_read = csv.reader(self.file)

С:

file_read = csv.reader(self.file, dialect=csv.excel_tab)

или откройте файл с universal newline mode и передать его в csv.reader, например:

reader = csv.reader(open(self.file, 'rU'), dialect=csv.excel_tab)

или splitlines(), например:

def read_file(self):
    with open(self.file, 'r') as f:
        data = [row for row in csv.reader(f.read().splitlines())]
    return data

Я понимаю, что это старый пост, но я столкнулся с той же проблемой и не вижу правильного ответа, поэтому я дам ему попробовать

Ошибка Python:

_csv.Error: new-line character seen in unquoted field

вызвано попыткой чтения файлов CSV Macintosh (pre OS X formatted). Это текстовые файлы, которые используют CR для конца строки. При использовании MS Office убедитесь, что вы выбрали либо plain CSV или CSV (MS-DOS). не используйте CSV (Macintosh) сохранить как-тип файла.

моя предпочтительная версия EOL будет LF (Unix/Linux/Apple), но я не думаю, что MS Office предоставляет возможность сохранять в этом формате.

для Mac OS X, сохраните файл CSV в "Windows, разделенных запятой (.формат CSV.

Если это случится с вами на mac (как это было со мной):

  1. сохраните файл как CSV (MS-DOS Comma-Separated)
  2. запустите следующий скрипт

    with open(csv_filename, 'rU') as csvfile:
        csvreader = csv.reader(csvfile)
        for row in csvreader:
            print ', '.join(row)
    

попробуйте запустить dos2unix на вашем windows импортированные файлы сначала

Это ошибка, с которой я столкнулся. Я его спас .csv-файл в MAC OSX.

при сохранении сохраните его как " значения, разделенные запятыми Windows (.csv)", который решил проблему.

это сработало для меня на OSX.

# allow variable to opened as files
from io import StringIO

# library to map other strange (accented) characters back into UTF-8
from unidecode import unidecode

# cleanse input file with Windows formating to plain UTF-8 string
with open(filename, 'rb') as fID:
    uncleansedBytes = fID.read()
    # decode the file using the correct encoding scheme
    # (probably this old windows one) 
    uncleansedText = uncleansedBytes.decode('Windows-1252')

    # replace carriage-returns with new-lines
    cleansedText = uncleansedText.replace('\r', '\n')

    # map any other non UTF-8 characters into UTF-8
    asciiText = unidecode(cleansedText)

# read each line of the csv file and store as an array of dicts, 
# use first line as field names for each dict. 
reader = csv.DictReader(StringIO(cleansedText))
for line_entry in reader:
    # do something with your read data 

Comments

    Ничего не найдено.