read leer importar create python django csv

python - leer - El carácter de nueva línea de CSV se ve en el error de campo no citado



leer csv python (7)

Este es un error que enfrenté. Había guardado el archivo .csv en MAC OSX.

Mientras guarda, guárdelo como "Valores separados por comas de Windows (.csv)" que resolvió el problema.

el siguiente código funcionó hasta el día de hoy cuando lo importé de una máquina con Windows y obtuve este error:

carácter de nueva línea visto en el campo sin comillas: ¿necesita abrir el archivo en modo de nueva línea universal?

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]

¿Cómo puedo solucionar este problema?

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)


Esto funcionó para mí en 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


Intenta ejecutar dos2unix primero en tus archivos importados de Windows


Me doy cuenta de que esta es una publicación anterior, pero me encontré con el mismo problema y no veo la respuesta correcta, así que lo intentaré

Error de Python:

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

Causado por intentar leer archivos CSV de Macintosh (formato pre OS X). Estos son archivos de texto que usan CR para el final de la línea. Si usa MS Office, asegúrese de seleccionar formato CSV simple o CSV (MS-DOS) . No use CSV (Macintosh) como tipo de guardar como.

Mi versión preferida de EOL sería LF (Unix / Linux / Apple), pero no creo que MS Office brinde la opción de guardar en este formato.


Para Mac OS X, guarde su archivo CSV en formato "Windows Comma Separated (.csv)".


Será bueno ver el archivo csv en sí, pero esto podría funcionar para usted, pruébelo, reemplace:

file_read = csv.reader(self.file)

con:

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

O bien, abra un archivo con universal newline mode y páselo a csv.reader , como:

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

O bien, use splitlines() , como este:

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


Si esto te sucede en mac (como me sucedió a mí):

  1. Guarde el archivo como CSV (MS-DOS Comma-Separated)
  2. Ejecute el siguiente script

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