Split函数显示Ruby 1.8.7中的错误

时间:2014-09-22 19:30:11

标签: ruby-on-rails ruby

我有一段用Ruby 1.8.7编写的代码 变量表情有一个由空格分隔的表情符号列表。但是,当我应用拆分功能时,我收到错误

lines=[]
keywords=""
emotes=""
Dir["/home/pnpninja/Downloads/aclImdb/train/formatted neg/*"].each do |reviewfile|
  sum_emote = 0
  sum_keyword = 0
  lines = File.foreach(reviewfile.to_s).first(2)
  lines[0].gsub!("\n",'')
  keywords = lines[0].split(" ")
  emotes = lines[1].split(" ")
  keywords.each { |keyword| sum_keyword = sum_keyword + keywordhash[keyword] }
  emotes.each { |emote| sum_emote = sum_emote + emotehash[emote] }
  senti=""
  if sum_emote+sum_keyword >= 0
    senti = "Positive"
  else
    senti = "Negative"
  end
  vv = reviewfile.gsub('formatted neg','analysed neg')
  fin = File.open(vv.to_s, 'a')
  fin << "Emote Weight = #{sum_emote}\n"
  fin << "Keyword Weight = #{sum_keyword}\n"
  fin << "Sentiment : #{senti}"
  fin.close
end

我得到的错误是

NoMethodError: private method `split' called for nil:NilClass

在第

emotes = lines[1].split(" ")

每个文件中的第二行可能是空的。

1 个答案:

答案 0 :(得分:2)

该错误告诉您,您无法在split对象上致电nil

重写您的代码以确保没有nil对象或确保在有问题的对象为零时不执行任何操作

unless lines[1].nil?
 emotes = lines[1].split(" ")
 emotes.each { |emote| sum_emote = sum_emote + emotehash[emote] }
end