У меня есть файл .csv, который содержит все текстовые поля.Однако некоторые текстовые поля содержат неэкранированный символ двойной кавычки, например:
"ID","Text","Optional text","Date"
"1","Today is going to be a good day","","2013-02-03"
"2","And I am inspired by the quote "every dog must have it's day"","Hi","2013-01-01"
"3","Did not the bard say All the World's a stage" this quote is so true","Terrible","2013-05-05"
Строки 1 и 2 в порядке, но 3 не читается правильно.В данный момент я вручную просматриваю файл в Notepad ++, чтобы попытаться удалить такие цитаты.В идеале я хотел бы, чтобы R был в состоянии справиться с этим, но я думаю, что неугасленная природа непревзойденной двойной кавычки делает такое ожидание необоснованным.
В Notepad ++ я пытаюсь создать регулярное выражение для определения двойных кавычек, которым не предшествует запятая или за ней не следует.Логика заключается в том, что допустимая двойная кавычка будет в начале или конце поля, и это обозначается соседней запятой.Это может помочь выявить большинство моих дел, с которыми я затем смогу разобраться.
Просто скажу, что у меня около 3,4 миллиона записей и около 0,1% кажется проблематичным.
РЕДАКТИРОВАТЬ: в качестве альтернативы был предложен fread из data.table, но использование freadеще менее удачно:
1: In fread(paste(infilename, "1", ".csv", sep = "")) :
Stopped early on line 21. Expected 18 fields but found 9. Consider fill=TRUE and comment.char=. First discarded non-empty line
Нет предложенных вариантов работает.Я думаю, это потому, что поле «Текст» также может содержать символы CRLF.Read.csv, кажется, просто игнорирует это (хорошо), в то время как fread принимает исключение.Извините, что я не могу сделать фактический текст доступным, но вот некоторые более полные тестовые данные, которые имеют как непревзойденные двойные кавычки (с read.csv есть проблемы), так и CRLF (с фредом есть проблемы).
"ID","Text","Optional text","Date"
"1","Today is going to be a good day","","2013-02-03"
"2","And I am inspired by the quote "every dog must have it's day"","Hi","2013-01-01"
"3","An issue with this line is that it contains a CRLF here
which is not usual.","Again an unusual CRLF
is present in these data","2013-02-02"
"4","Did not the bard say All the World's a stage" this quote is so true","Terrible","2013-05-05"
Было бы здорово помочь с регулярным выражением в Notepad ++.