o código a seguir funcionou até hoje quando importei de uma máquina Windows e recebi este erro:
caractere de nova linha visto no campo não citado - você precisa abrir o arquivo no modo de nova linha 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]
Como posso corrigir esse 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)
Respostas:
Será bom ver o próprio arquivo csv, mas isso pode funcionar para você, tente, substitua:
com:
Ou, abra um arquivo com
universal newline mode
e passe-o paracsv.reader
, como:Ou use
splitlines()
assim:fonte
get_row_count()
e dentroget_column_count()
- considere ler o arquivo__init__
e lembre-sedata
deself.data
, em seguida, use-o em outros métodos.Percebo que este é um post antigo, mas encontrei o mesmo problema e não vejo a resposta correta, por isso vou tentar
Erro Python:
Causado ao tentar ler arquivos CSV do Macintosh (pré-formatados no OS X). Esses são arquivos de texto que usam CR para final de linha. Se estiver usando o MS Office, certifique-se de selecionar o formato CSV simples ou CSV (MS-DOS) . Não use CSV (Macintosh) como tipo de salvamento.
Minha versão preferida da EOL seria LF (Unix / Linux / Apple), mas não creio que o MS Office ofereça a opção de salvar neste formato.
fonte
No Mac OS X, salve o arquivo CSV no formato "Windows Comma Separated (.csv)".
fonte
Se isso acontecer com você no mac (como aconteceu comigo):
CSV (MS-DOS Comma-Separated)
Execute o seguinte script
fonte
Tente executar
dos2unix
primeiro os arquivos importados do Windowsfonte
\x0d
finais de linha (ProDOS) para finais de linha\x0a
(UNIX).Este é um erro que eu enfrentei. Eu salvei o arquivo .csv no MAC OSX.
Ao salvar, salve-o como "Valores separados por vírgula do Windows (.csv)", que resolveu o problema.
fonte
Isso funcionou para mim no OSX.
fonte
Eu sei que isso foi respondido por um bom tempo, mas não resolvi meu problema. Estou usando o DictReader e o StringIO na minha leitura de csv devido a outras complicações. Consegui resolver o problema mais simplesmente substituindo explicitamente delimitadores:
Pode não ser razoável para enormes arquivos CSV, mas funcionou bem no meu caso de uso.
fonte
Solução alternativa e rápida: enfrentei o mesmo erro. Reabri o arquivo csv "estranho" no GNUMERIC na minha máquina lubuntu e exportei o arquivo como arquivo csv. Isso corrigiu o problema.
fonte