R读取格式不正确的csv,字段中的引号和分隔符不均匀

时间:2018-07-26 14:25:21

标签: r csv import data-import

我有一个格式错误的csv文件(我没有制作),在某些字段中同时包含分隔符和引号。我想读到R。

表的三行看起来像这样:

| ids    |info           | text                                   |
| id 1   |extra_info;1998| text text text                         |
| id 2   |extra_info2    | text with broken dialogues quotes "hi! |

#the same table in R string could be
string <- "ids;info;text\n\"id 1\";\"extra_info;1998\";\"text text text\"\n\"id 2\";extra_info2;\"text with broken dialogues quotes \"hi!\" \n"

使用“引号括住csv-s中常见的不止一个单词的任何字段,并使用分号;用作分隔符。不幸的是,它的构建方式是最后一列(始终是最后一列)可以包含文本批量中随机数量的分号或引号,并且这些引号不会总是转义。

我正在寻找一种读取此文件的方法。到目前为止,我已经提出了一个非常复杂的工作流程,以正则表达式(从here开始)中的前N个分隔符替换为另一个较少使用的分隔符-因为文本始终在最后,但是仍然当行中引号数量不均时,当前失败。

我认为必须有一种更简单的方法来执行此操作,因为格式错误的csv -s在这里应该是一个经常出现的问题。谢谢。

1 个答案:

答案 0 :(得分:1)

data.table::fread创造奇迹:

library(data.table)
test <- fread("test.csv")
# Remove extraneous columns
test$V1 <- NULL
test$V5 <- NULL