我正在尝试将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
文件的屏幕截图:
有人能否解释这里出了什么问题?太棒了 - 谢谢。
答案 0 :(得分:2)
它告诉您name
是nil
,可能是因为row[1]
不存在。我的猜测是列没有正确拆分。现在你说的是列被标签分隔,但这不是屏幕截图所显示的。
您确定不想要:col_sep => ","
吗?