我想要做的是计算每行中@的数量,并将此值放入最后的总字段中。
我的意思是它有点工作,但它只增加了它所计算的最后一行的值。
我的Csv
Header,Header,Header
Info@,Info,Info
Info,Info@@,Info
Info,Info,Info@@@
我的代码
require "csv"
table = CSV.read("my_test.csv", {
headers: true,
col_sep: ","
})
File.readlines('my_test.csv').each do |line|
table.each do |row|
at_count = line.count('@')
row["Total"] = at_count
end
end
CSV.open("my_test.csv", "w") do |f|
f << table.headers
table.each { | row | f << row }
end
当前结果
Header,Header,Header,Total
Info@,Info,Info,3
Info,Info@@,Info,3
Info,Info,Info@@@,3
答案 0 :(得分:1)
您不需要File.readlines
; CSV已经读过了。
require "csv"
table = CSV.read("test.csv", { headers: true}) #just shorter
table.each do |row | #no readlines
at_count = row.to_s.count('@') # note the to_s
row["Total"] = at_count
end
CSV.open("my_test.csv", "w") do |f |
f << table.headers
table.each { | row | f << row}
end