未定义的方法'split'代表nil:NilClass(NoMethodError)

时间:2013-10-10 20:26:16

标签: ruby csv split

我正在尝试将CSV文件中的行拆分为数组。我可以将CSV文件中的所有内容打印到控制台没问题,如下所示:

CSV.foreach('so1.csv', :headers => true, :col_sep => "\t", :skip_blanks => true) do |row|
  id, name = row[0], row[1]
  puts id, name
end

但是,当我尝试将namerow[1]分割为names数组时,我收到undefined method 'split' for nil:NilClass (NoMethodError)条消息:

CSV.foreach('so1.csv', :headers => true, :col_sep => "\t", :skip_blanks => true) do |row|
  id, name = row[0], row[1]
  unless (id =~ /#/)
    names = name.split
  end

我也试过name.split("\n")name.split("\t")无济于事。

为清楚起见,CSV文件的屏幕截图:

CSV Screenshot

CSV Screenshot

有人能否解释这里出了什么问题?太棒了 - 谢谢。

1 个答案:

答案 0 :(得分:2)

它告诉您namenil,可能是因为row[1]不存在。我的猜测是列没有正确拆分。现在你说的是列被标签分隔,但这不是屏幕截图所显示的。

您确定不想要:col_sep => ","吗?