从csv文件中删除单数/

时间:2011-09-09 00:24:08

标签: ruby csv fastercsv stripping

我有一个csv文件,其中有一些区域在什么时候没有任何内容,并且没有任何我想要删除的内容。问题是,我还有文件中的其他项目,我不想删除。

一个例子:

/abc, /, akaksdhfaiwe
/, /foo, /bar

我想成为:

/abc,, akaksdhfaiwe
, /foo, /bar

我该怎么做?我不能使用gsub('^ /',''),因为它会删除/ abc / foo / bar。而对于我的生活,我似乎无法找到“结束”。我希望\ Z会工作,没有运气。

任何参赛者?

到目前为止,我一直在使用更快的CSV进行大量的操作。

2 个答案:

答案 0 :(得分:0)

你可以使用红宝石:

"/asdf /, /fdsa".gsub("/,", ",")

答案 1 :(得分:0)

如果您的文件不是那么大,那么您可以在清理它时将其啜饮到内存中,然后再将其写出来:

clean = [ ]
CSV.open(your_csv).each { |r| csv << r.map { |e| e.sub(/^\s*\/$/, '') } }
out = CSV.open(your_csv, 'wb')
clean.each { |r| out << r }  
out.close

如果你以某种方式拥有一个令人难以置信的巨大的CSV文件,它不会同时存在于内存中:

out = CSV.open('tempfile.csv', 'wb')
CSV.open(your_csv).each { |r| out << r.map { |e| e.sub(/^\s*\/$/, '') } }
out.close
File.rename('tempfile.csv', your_csv)

要么转这个:

/abc, /, akaksdhfaiwe
/, /foo, /bar

/abc,"", akaksdhfaiwe
"", /foo, /bar