Найти - Пользователи
Полная версия: Ошибка Skipping line 1009: expected 13 fields, saw 14
Начало » Python для новичков » Ошибка Skipping line 1009: expected 13 fields, saw 14
1
cornypie
Есть csv файл. Импортирую в датафрейм с разделителем ‘#’. В нем названия фильмов, в одном из названий есть #, поэтому код воспринимает его как разделитель. Как настроить цитирование, чтобы символы между ‘\n’ и ‘ #" ’ воспринимались как единое целое?

import pandas as pd
movies=pd.read_csv('movies.csv',
sep='#',
error_bad_lines=False)

файл
py.user.next
cornypie
Есть csv файл.
Расширение csv у файла ещё не означает, что внутри него данные в формате CSV.

Вот описание CSV-формата
https://tools.ietf.org/html/rfc4180

В твоём файле нарушены концы строк (в CSV они должны быть CRLF, а не просто LF). Также в файле используются двойные кавычки там, где они не нужны. Почему так произошло и откуда они взялись? Я думаю, ты занёс текст с кавычками и эти кавычки не проэкранировал. Получились кавычки, которые вообще ничего не делают и при чтении CSV исчезнут как просто кавычки. В CSV-формате кавычки экранируются через повтор кавычек.

Так что тебе надо сначала сделать из этого файла csv-файл, а уже потом его передавать в pandas.

cornypie
В нем названия фильмов, в одном из названий есть #, поэтому код воспринимает его как разделитель.
В CSV-формате ничего подобного не происходит, так как там существуют надёжные средства экранирования. Поэтому в CSV-формате ты можешь и разделитель полей как текст внутри поля записывать, и разделитель строк как текст внутри поля записывать.

Причина проблем в том, что это у тебя не CSV-формат, а невалидные, похожие на CSV данные. Они только похожи на CSV, но это просто какие-то данные. И дело не в другом разделителе, а вообще во всём.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB