CSV由';'分隔在某些属性中使用分号,无法正确解析

时间:2016-10-13 20:29:02

标签: r csv parsing data-cleaning

我已经使用以下架构以criticalcss: { custom: { options: { url: "http://localhost:9000", width: 1200, height: 900, outputfile: "web/css/critical.css", filename: "web/css/style.css", buffer: 800*1024, ignoreConsole: false } } }, 文件的形式下载推文: .csv

问题在于,有些推文在其文本属性中有分号,例如,"我爱你,宝贝;)"

当我尝试将此csv导入R时,我会收到一些错误架构的记录,您可以在此处看到: imported csv with read.csv

我认为这种格式错误是因为csv解析器的创建;如果您理解我的意思,请在文本部分中将表格分开。

我已尝试与正则表达式匹配: username;date;retweets;favorites;text;geo;mentions;hashtags;permalink 并将其替换为(;".*)(;)(.*";),直到找不到更多匹配项,但错误在csv解析中继续。

有什么想法来清理这个csv文件?或者为什么csv解析器工作不好?

感谢您阅读

EDIT1: 我认为结构中没有问题而不是选择错误的分隔符(&#39 ;;'),看看这些示例记录

($1)($3)

这是一个格式良好的记录,但我认为文本部分中的分号(标记在"")强制解析器将文本部分分成2列,在这种情况下: Juan_Levas;2015-09-14 19:59;0;2;"Me sonrieron sus ojos; y me tembló hasta el alma.";Medellín,Colombia;;;https://twitter.com/Juan_Levas/status/643574711314710528 "Me sonrieron sus ojos。 这可能吗?

另外,我使用y me tembló hasta el alma.";将csv解析为数据框。

EDIT2: 如何重现错误:

  1. 从此处获取read.csv("data.csv", sep=';') [~2 MB]:Download csv
  2. csv
  3. 探索生成的DataFrame(您可以按日期,转发或收藏夹对其进行排序,您将看到解析中的不一致)

1 个答案:

答案 0 :(得分:0)

您的CSV文件格式不正确:问题不在于字符字段中出现的分隔符,而是"未转义的事实。

最好的办法是生成一个格式正确的新文件(通常:使用RFC 4180)。

如果无法做到,那么您最好的选择是使用readr之类的“智能”工具:

library(readr)
df <- read_csv2('twit_data.csv')

它对你的文件做得很好。 (我在结果数据框中看不到任何明显的解析错误)