Как игнорировать запятые внутри предложения при чтении CSV-файла с Python пандами - PullRequest
0 голосов
/ 29 октября 2018

У меня есть CSV-файл, и я хотел бы прочитать его с помощью библиотеки панд в Python.

Вот заголовок и первая строка моего файла.

content,topic,class,NRC-Affect-Intensity-anger_Score,NRC-Affect-Intensity-fear_Score,NRC-Affect-Intensity-sadness_Score,NRC-Affect-Intensity-joy_Score
'@stellargirl I loooooooovvvvvveee my Kindle2. Not that the DX is cool, but the 2 is fantastic in its own right.',kindle2,positive,0,0,0,0

Он разделен запятыми и имеет 7 полей. Когда я попытался прочитать этот файл, я получил ошибку:

zz=  pd.read_csv('proc_data.csv', sep=',')
Error tokenizing data. C error: Expected 8 fields in line 14, saw 9

Я полагаю, что это комплан для запятых в первом столбце (Часть между ' символами)

Можно ли правильно прочитать этот файл?

head -15 less proc_data.csv
head: less: No such file or directory
==> proc_data.csv <==
content,topic,class,NRC-Affect-Intensity-anger_Score,NRC-Affect-Intensity-fear_Score,NRC-Affect-Intensity-sadness_Score,NRC-Affect-Intensity-joy_Score
'@stellargirl I loooooooovvvvvveee my Kindle2. Not that the DX is cool, but the 2 is fantastic in its own right.',kindle2,positive,0,0,0,0
'Reading my kindle2...  Love it... Lee childs is good read.',kindle2,positive,0,0,0,1.375
'Ok, first assesment of the #kindle2 ...it fucking rocks!!!',kindle2,positive,0,0,0,0
'@kenburbary You\'ll love your Kindle2. I\'ve had mine for a few months and never looked back. The new big one is huge! No need for remorse! :)',kindle2,positive,0,0,0.594,1.125
'@mikefish  Fair enough. But i have the Kindle2 and I think it\'s perfect  :)',kindle2,positive,0,0,0,0.719
'@richardebaker no. it is too big. I\'m quite happy with the Kindle2.',kindle2,positive,0,0,0,0.788
'Fuck this economy. I hate aig and their non loan given asses.',aig,negative,0.828,0.484,0.656,0
'Jquery is my new best friend.',jquery,positive,0,0,0,0.471
'Loves twitter',twitter,positive,0,0,0,0
'how can you not love Obama? he makes jokes about himself.',obama,positive,0,0,0,0.828
'Check this video out -- President Obama at the White House Correspondents\' Dinner ',obama,neutral,0,0,0,0.109
'@Karoli I firmly believe that Obama/Pelosi have ZERO desire to be civil.  It\'s a charade and a slogan, but they want to destroy conservatism',obama,negative,0,0,0,0.484
'House Correspondents dinner was last night whoopi, barbara &amp; sherri went, Obama got a standing ovation',obama,positive,0,0,0.078,0
'Watchin Espn..Jus seen this new Nike Commerical with a Puppet Lebron..sh*t was hilarious...LMAO!!!',nike,positive,0,0,0,0.672

1 Ответ

0 голосов
/ 29 октября 2018

Вы пытаетесь разделить столбцы запятыми, но внутри строк могут присутствовать запятые.

Обычно об этом заботится аргумент quoting метода read_csv, который по умолчанию равен quoting='"'. Однако в вашем CSV-файле у вас есть одинарные кавычки, поэтому вам нужно изменить значение на quoting="'".

Это, однако, приводит к тому, что внутри строк присутствуют апострофы, которым предшествует экранирование от обратной косой черты. По умолчанию pd.read_csv имеет аргумент escapechar, установленный на None, поэтому вам придется установить и этот.

В итоге мы получаем:

pd.read_csv('proc_data.csv', sep=',',quotechar="'", escapechar='\\')

Обратите внимание, что саму escapechar необходимо здесь экранировать.

Если вас не интересуют отдельные строки, и вы просто хотите прочитать столько, сколько сможете успешно проанализировать, вы можете добавить в них ключевое слово error_bad_lines=False. Затем выясните из предупреждений, можно ли исправить эти линии или от них нужно отказаться.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...