0

我有一个 csv 文件,其中有几个区域 / 没有进行任何操作,并且没有进行任何我想删除的操作。问题是,我在文件中还有其他项目有 / 我不想删除。

一个例子:

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

我想成为:

/abc,, akaksdhfaiwe
, /foo, /bar

我该怎么做呢?我不能使用 gsub('^/', '') 因为它会去掉 /abc /foo /bar。而对于我的生活,我似乎无法找到一个“结束”。我希望 \Z 会起作用,但运气不好。

有接盘侠吗?

我一直在使用 fastCSV 进行很多迄今为止非常棒的操作。

4

2 回答 2

0

使用红宝石,您可以:

"/asdf /, /fdsa".gsub("/,", ",")
于 2011-09-09T00:27:12.823 回答
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
于 2011-09-09T00:59:51.357 回答