そのため、文字列形式の金額を含む 2 つの列を持つ CSV があります。head -n 5 file.csv
次のことを明らかにします。
Title,Distributor Long Name,Wk,Estimated Weekend Gross,Cume,Locs Reported,Avg/Loc,Booking Title #
"=""Zero Dark Thirty""","=""Sony""",4,"24,000,000","29,480,807",2937,"8,172","=""66273"""
"=""Haunted House, A""","=""Open Road""",1,"18,817,000","18,817,000",2160,"8,712","=""71209"""
"=""Gangster Squad""","=""Warner Bros.""",1,"16,710,000","16,710,000",3103,"5,385","=""66556"""
"=""Django Unchained""","=""The Weinstein Company""",3,"11,065,000","125,399,122",3012,"3,674","=""66122"""
これが約40行続きます。"Estimated Weekend Gross" と "Cume" の 2 つの列の値が string になっていることに気付くでしょう。
私の質問は、これらの 2 つの列のみを反復処理し、文字列値を整数に変換して、同じCSVrow.to_s.gsub(',','').to_i
のそれぞれの行にそれらの値を上書きする方法はありますか?
私はこのようなことをしようとしましたが、適切にフォーマットされたCSVを取得していません..
File.open('modified.csv', 'w') do |csv|
CSV.foreach('original.csv') do |row|
csv << row[0].to_s.gsub('=','').gsub(', The','')
csv << row[3].to_s.gsub(',','').to_i
csv << row[4].to_s.gsub(',','').to_i
end
end
ブロックを実行するときにも遊んでみまし:headers => :integer
たが、値を文字列から整数に変換することはできません。それで、私は何が欠けていますか?これらの値を保存してから新しい CSV を作成する必要がありますか、それとももっと簡単な方法がありますか?