我正在尝试用另一个文件中的值替换大型(4.6GB)csv 文件中的列。例如:
| 编号 | 姓名 |
| 01 | 约翰
| 编号 | 地址 | 电话 |
| 01 | 地点 | 数字
我想要的是将底部表格中的 01 替换为“约翰”。
new = CSV.open("usage_new.csv", "w")
prog = CSV.read("programs.csv", encoding:"ASCII-8BIT")
CSV.foreach("Usage-fixed.csv", encoding:"ASCII-8BIT") do |row|
for i in 0..prog.size
if row[5] == prog[i][0]
puts row[5] + " equals " + prog[i][1]
new << [ row[0] + row[1] + row[2] + row[3] + row[4] + prog[i][1] + row[5] + row[6] + row[7] + row[8] + row[9] + row[10] + row[11] + row[12] + row[13] + row[14] + row[15] + row[16] + row[17] ]
end
end
end
问题是我不断收到以下错误:
blah.rb:11:in `block (2 levels) in <main>': undefined method `[]' for nil:NilClass (NoMethodError)
from blah.rb:10:in `each'
from blah.rb:10:in `block in <main>'
from /home/mastelj/.rvm/rubies/ruby-2.0.0-p195/lib/ruby/2.0.0/csv.rb:1717:in `each'
from /home/mastelj/.rvm/rubies/ruby-2.0.0-p195/lib/ruby/2.0.0/csv.rb:1120:in `block in foreach'
from /home/mastelj/.rvm/rubies/ruby-2.0.0-p195/lib/ruby/2.0.0/csv.rb:1266:in `open'
from /home/mastelj/.rvm/rubies/ruby-2.0.0-p195/lib/ruby/2.0.0/csv.rb:1119:in `foreach'
from blah.rb:9:in `<main>'
关于什么可能导致这样的事情的任何想法?
编辑:第 11 行(违规行)是带有 iff 语句的行