następujący kod działał do dzisiaj, kiedy zaimportowałem z komputera z systemem Windows i otrzymałem ten błąd:
znak nowej linii widoczny w niecytowanym polu - czy musisz otworzyć plik w trybie uniwersalnej nowej linii?
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]
Jak mogę rozwiązać ten problem?
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)
Odpowiedzi:
Dobrze będzie zobaczyć sam plik csv, ale może to zadziałać, spróbuj, zamień:
z:
Lub otwórz plik za pomocą
universal newline mode
i przekaż gocsv.reader
, na przykład:Lub użyj w
splitlines()
ten sposób:źródło
get_row_count()
iget_column_count()
- rozważenie odczytu pliku w__init__
i zapamiętaćdata
wself.data
, a następnie używać go w innych metodach.Zdaję sobie sprawę, że to stary post, ale napotkałem ten sam problem i nie widzę poprawnej odpowiedzi, więc spróbuję
Błąd Pythona:
Spowodowane próbą odczytania plików CSV dla komputerów Macintosh (sformatowanych przed systemem OS X). Są to pliki tekstowe, które używają CR na końcu wiersza. W przypadku korzystania z MS Office należy wybrać opcję zwykły CSV format lub CSV (MS-DOS) . Nie używaj CSV (Macintosh) jako typu „zapisz jako”.
Moją preferowaną wersją EOL byłaby LF (Unix / Linux / Apple), ale nie sądzę, aby MS Office zapewniał opcję zapisywania w tym formacie.
źródło
W systemie Mac OS X zapisz plik CSV w formacie „Windows z przecinkami (.csv)”.
źródło
Jeśli tak się stanie na komputerze Mac (tak jak mnie):
CSV (MS-DOS Comma-Separated)
Uruchom następujący skrypt
źródło
Spróbuj
dos2unix
najpierw uruchomić w systemie Windows zaimportowane plikiźródło
\x0d
końcówek linii (ProDOS) na zakończenia linii\x0a
(UNIX).To jest błąd, z którym się spotkałem. Zapisałem plik .csv w MAC OSX.
Podczas zapisywania zapisz go jako „Windows Comma Separated Values (.csv)”, co rozwiązało problem.
źródło
To działało dla mnie na OSX.
źródło
Wiem, że odpowiedź trwa od dłuższego czasu, ale nie rozwiązuje mojego problemu. Używam DictReader i StringIO do odczytu csv z powodu innych komplikacji. Udało mi się rozwiązać problem w prostszy sposób, wyraźnie zastępując ograniczniki:
Może nie być rozsądne w przypadku ogromnych plików CSV, ale działało dobrze w moim przypadku użycia.
źródło
Alternatywne i szybkie rozwiązanie: napotkałem ten sam błąd. Ponownie otworzyłem "dziwny" plik csv w GNUMERIC na mojej maszynie lubuntu i wyeksportowałem go jako plik csv. To rozwiązało problem.
źródło