开发者

stripping singular / from a csv file

I have a csv file which has a few areas where / proceeded by nothing and proceeded by nothing that I'd like to strip out. The catch is, I also have other items in the file which have a / that I don't want to strip out.

an example:

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

I'd like to be:

/abc,, akaksdhfaiwe
, /foo, /bar

How do I d开发者_运维知识库o this? I can't use gsub('^/', '') because it would strip out the /abc /foo /bar. And for the life of me, I can't seem to find an 'ends with'. I was hoping that \Z would work, no luck.

Any takers?

I've been using fasterCSV for a lot of the manipulation which has been pretty great so far.


If your file isn't that big then you could slurp it into memory while cleaning it up and then write it out again:

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

If you somehow have an incredibly massive CSV file that won't fit in memory all at once:

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)

Either should turn this:

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

into

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


With ruby you can do:

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

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜