【发布时间】:2013-07-31 18:54:23
【问题描述】:
我有一个大 (>1GB) CSV 文件,我正在尝试将其读入 R 中的数据框。
非数字字段用双引号括起来,这样内部逗号就不会被解释为分隔符。这很好。但是,有时条目中也会出现不匹配的双引号,例如 "2" Nails"。
解决此问题的最佳方法是什么?我目前的计划是使用像 awk 这样的文本处理器将双引号 " 中的引用字符重新标记为像管道 | 这样的非冲突字符。我查找引用字符的启发式方法是逗号旁边的双引号:
gawk '{gsub(/(^\")|(\"$)/,"|");gsub(/,\"/,",|");gsub(/\",/,"|,");print;}' myfile.txt > newfile.txt
【问题讨论】:
-
我看不出将所有“\””更改为“|”会有什么帮助。我认为您可能需要一个正则表达式解决方案(可能在 awk 中实现),它会找到以下实例: ","\"[^,]{0,}\"[^,]{0,}\"," ,即逗号之间的三个双引号。
-
@DWin 查看编辑。如果我将双引号改为管道,那么我可以在
read.csv中设置quote='|'。 -
您当然可以这样做,但您将遇到与当前遇到的相同的解析困难。在一个小测试用例上试一试。在您的测试用例中,会有两个有问题的双引号,一个在第一个双引号旁边。