我解析一個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