У меня проблема с тем, что у меня есть большой файл, который я хочу прочитать в Python, и он выглядит так:
"2019-10-09 10:11:09","NICK","Hello, how are you
today? I'm like ""weather"", often changing."
Я хочу прочитать этот файл в кадре данных, который будет выглядеть так :
col1 col2 col3
2019-10-09 09:32:09 NICK Hello, how are you today? I'm like ""weather"", often changing.
У меня мало проблем с этим. Во-первых, существует проблема, заключающаяся в том, что мой разделитель - ',' который также находится внутри некоторых сообщений из col3. Вторая проблема заключается в том, что внутри некоторых сообщений от col3 есть разрыв строки, который я не знаю, как обрабатывать (как в примере после 'you'). И последняя проблема заключается в том, что внутри сообщений от col3 есть также две двойные кавычки "" "" ", представляющие кавычку внутри сообщения.
Я пытался прочитать этот файл с помощью:
with open('/data/myfile.csv', 'r', encoding='utf-8') as csvfile:
df = pd.read_csv(csvfile, sep=",", quotechar='"', escapechar='\\')
К сожалению, этот метод не работает. Я не знаю, что из этих трех вещей, которые я объяснил, вызывает проблему. Он показывает мне ошибки, что он ожидал три столбца, но было немного больше.
РЕДАКТИРОВАТЬ: Есть некоторые другие проблемы, потому что он все еще показывает мне эту ошибку:
Error tokenizing data. C error: Expected 3 fields in line 60, saw 5
Когда я смотрю на файл, я не знаю, как он интерпретирует строки, потому что я получил в сообщениях от col3 несколько строк разрыва внутри. Как я могу напечатать эту точную строку, которая вызывает проблемы?
EDIT2: я использовал этот код в терминале:
sed -n 60p myfile.csv
И он напечатал пустую строку. Так что я сделал это также со строками в несколько строк до и после. Это выглядит так:
"2019-10-09 10:11:09","som1","This isn't this.
It's like this, and this.
And as my opinions is this.
Finally, it's the end."
EDIT3: @Boendal был прав. Эта строка, которую я включил, не вызывает проблемы. Теперь я отредактировал код так:
with open('opinions-ml.csv', 'r', encoding='utf-8') as csvfile:
df = pd.read_csv(csvfile, names=['col1', 'col2', 'col3'], sep=",", quotechar='"', escapechar='\\')
И я обнаружил, что проблема вызвана строками, подобными этим:
"2019-10-09 10:11:09","NICK","This is some text "and this, is quote" and it is also text
Awww. and, there was, line break"
Python читает это как фрейм данных, который выглядит так:
col1 col2 col3
2019-10-09 09:32:09 NICK This is some text and this
Awww. and there was line break
Как вы думаете, есть ли шанс что-то сделать с этой проблемой? Может быть, с помощью регулярных выражений? Или я должен вернуться к провайдеру файлов, чтобы это исправить?
EDIT4: И еще одна строка:
"2019-10-09 10:11:09","NICK","This is some text "and this is quote" and it is also text
Awww. and there, was line break"
Python читает это как фрейм данных, который выглядит следующим образом:
col1 col2 col3
2019-10-09 09:32:09 NICK This is some text and this is quote" and it is also text
Awww. and there was line break NaN