我解析一个TSV文件并将其加载到MySQL中。我得到了这个工作,然后发现TSV文件中有反斜杠被解释为换行符。我想在数据发送到数据库之前从所有字段中删除\。这是一个简短的例子,文件中有300列,其中许多列将是空白的。如何在解析过程中从tsv文件中删除字符?
begin
CSV.foreach(file, :col_sep => "\t") do |row|
row.map!{ |e| e.gsub(/\\/, '')}
d = Datafeed.new
d.id = row[0]
d.description = row[1]
d.save!
end
end
当我运行这个例子时,我得到一个错误:未定义的方法`gsub'为nil:NilClass。我认为这个错误是由文件中的空白产生的。然而,当我尝试添加
row.map!{ |e| unless e.blank e.gsub(/\\/, '') }
它不会执行,我得到一个意外的错误}。
这是消除反斜杠的正确方向吗?什么是最好的方法?
感谢
感谢@Levi这是工作。一个注意事项是,要删除的角色竟然是一个选项卡。在这种情况下,我需要将映射函数移到CSV块之外,以便在执行col_sep之前进行处理。 – analyticsPierce