我有一段用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(" ")
每个文件中的第二行可能是空的。
答案 0 :(得分:2)
该错误告诉您,您无法在split
对象上致电nil
。
重写您的代码以确保没有nil对象或确保在有问题的对象为零时不执行任何操作
unless lines[1].nil?
emotes = lines[1].split(" ")
emotes.each { |emote| sum_emote = sum_emote + emotehash[emote] }
end