1

Rのデータフレームに読み込もうとしている大きな(> 1GB)CSVファイルがあります。

数値以外のフィールドは二重引用符で囲み、内部のコンマが区切り文字として解釈されないようにします。それはいいことです。ただし、 のように、一致しない二重引用符がエントリに含まれることもあり"2" Nails"ます。

これを回避する最善の方法は何ですか? 私の現在の計画は、 awk のようなテキスト プロセッサを使用して、引用文字を二重引用符"から pipe のような競合しない文字に変更すること|です。引用符文字を見つけるための私のヒューリスティックは、コンマの隣にある二重引用符です。

gawk '{gsub(/(^\")|(\"$)/,"|");gsub(/,\"/,",|");gsub(/\",/,"|,");print;}' myfile.txt > newfile.txt 

この質問read.csvは関連していますが、ファイルに区切り記号のないコンマが引用符で囲まれているため、解決策 ( of の引数quote="") は実行できません。

4

2 に答える 2

2

コンマの横に引用符を探すというあなたの考えは、おそらくあなたができる最善のことです。ただし、それを好転させて、コンマの隣にないすべての引用符 (または行頭/行末) を正規表現でエスケープさせることもできます。

検索する

(?<!^|,)"(?!,|$)

すべての一致を に置き換えます""

R の正規表現エンジンには複数行モードがないため、R はこれに最適なツールではないかもしれませんが、Perl ではワンライナーになります。

$subject =~ s/(?<!^|,)"(?!,|$)/""/mg;
于 2013-07-31T20:31:34.190 に答える