【发布时间】:2013-10-10 20:26:15
【问题描述】:
我正在尝试将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
但是,当我尝试将name 即row[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 文件的屏幕截图:
有人能解释一下这里出了什么问题吗?太好了-谢谢。
【问题讨论】:
-
您的
puts id, name并不能肯定地告诉您整行都没有进入row[0]。所以这可能就是正在发生的事情,name是nil。整行在id中。你需要:col_sep => ','。 -
请不要向我们提供重现问题所需数据的屏幕截图。相反,将示例数据复制然后粘贴到您的问题中,我们可以在其中复制它。想象一下,当图片的链接断开并且不再可见时,要理解您的问题将是多么困难。
-
@theTinMan 公平点,以后会做......谢谢