Ich habe ein Ruby-Skript, das zwei Dateien erstellt, indem Sie Werte aus einer anderen Datei nehmen und zusammenführen.keine implizite Umwandlung von Nil in String Fehler
#Resources
require 'rubygems'
require 'csv'
col_date = []
col_constant1 = []
col_constant2 = []
col_appYear = []
col_statsDesc = []
col_keyStats =[]
col_weeklyTotal=[]
weekly_total = []
fname = "finalStats.csv" #variable for capture file
finalStatsFile = File.open(fname, "w") #write to capture file
fname2 = "weeklyStats.csv"
weeklyStatsFile = File.open(fname2, "w")
CSV.foreach('compareData.csv', converters: :numeric) do |row|
weekly_total << row[0] - row[1]
weekly_total.each do |data|
data << weekly_total.shift
weeklyStatsFile.puts data
end
end
#retrieve stats from original document
CSV.foreach("autoCapture.csv") {|row| col_date << row[0]}
CSV.foreach("autoCapture.csv") {|row| col_constant1 << row[1]}
CSV.foreach("autoCapture.csv") {|row| col_appYear << row[2]}
CSV.foreach("autoCapture.csv") {|row| col_statsDesc << row[3]}
CSV.foreach("autoCapture.csv") {|row| col_constant2 << row[4]}
CSV.foreach("autoCapture.csv") {|row| col_keyStats << row[5]}
CSV.foreach("weeklyStats.csv") {|row| col_weeklyTotal << row[0]}
col_date.zip(col_constant1, col_appYear, col_statsDesc, col_constant2, col_keyStats, col_weeklyTotal).each do |col_date, col_constant1, col_appYear, col_statsDesc, col_constant2,
col_keyStats, col_weeklyTotal|
finalStatsFile.puts col_date+", "+col_constant1+", "+ col_appYear+", "+col_statsDesc+", "+col_constant2+", "+col_keyStats+", "+col_weeklyTotal
end
In einer Datei Ich mag die Werte in der Zeile [1] aus den Werten in der Zeile [0] subtrahieren, um einen neuen ‚weekly_total‘ Wert zu schaffen. Ich gebe dann dieses Array von Werten in einer Datei namens weeklyStats.csv aus. Dies wird eine Spalte von Werten in Ordnung ausgeben.
Allerdings mag ich diese Werte mit einem anderen Satz aus einer anderen Datei (autoCapture.csv) beizutreten, und wenn ich versuche, sie als Arrays zip, so dass sie über lesen Reihen in entsprechenden erhalte ich die Fehlermeldung:
weeklyStats_csv.rb:42:in `+': no implicit conversion of nil into String (TypeError)
from weeklyStats_csv.rb:42:in `block in <main>'
from weeklyStats_csv.rb:40:in `each'
from weeklyStats_csv.rb:40:in `<main>'
Ich nehme an, dies bedeutet, dass das Array Zip keine Ausnahme abfangen wird, wenn der eine der Werte Null ist und daher nicht in eine Zeichenfolge konvertiert werden kann. Das Problem ist, ich habe versucht, wöchentliche_total in String und Array zu konvertieren, da ich dachte, dass es das Problem sein kann (ein Mismatch von Typen), aber ich nicht nur, wo ich von hier aus gehen soll. Kann jemand helfen?
Entfernen Endbalkens von 'col_weeklyTotal |' in Zeile 42. – mudasobwa
Danke für die Rückmeldung an mich. Leider hat das nicht funktioniert, ich denke ich brauche das um die Variablen (in diesem Fall Arrays) zu umschließen, die der Sammlung –
zugeordnet sind. Ah, Entschuldigung, ich wusste nicht, dass diese Teile Teil der vorherigen Zeichenfolge sind. Dann entfernen Sie einfach Wagenrücklauf von der vorherigen Zeile. – mudasobwa