0

私はいくつかの領域を含むcsvファイルを持っています / 何も進めず、何も進めずに取り除きたいです。キャッチは、/ を削除したくないファイルに他のアイテムもあるということです。

例:

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

私はなりたいです:

/abc,, akaksdhfaiwe
, /foo, /bar

どうすればいいですか?/abc /foo /bar が削除されるため、gsub('^/', '') は使用できません。そして、私の人生では、「終わり」を見つけることができないようです. \Z が機能することを期待していましたが、うまくいきませんでした。

テイカーはいますか?

これまでのところ、多くの操作にfasterCSVを使用してきましたが、これは非常に優れています。

4

2 に答える 2

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 に答える
0

ルビーを使用すると、次のことができます。

"/asdf /, /fdsa".gsub("/,", ",")
于 2011-09-09T00:27:12.823 に答える