Başka bir dosyadan değerler alıp birleştirerek iki dosya oluşturacak bir ruby komut dosyasına sahibim. Bir dosyadanil için örtülü bir örtük bir dönüşüme dönüştürülmedi Hata
#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
I aralıksız değerleri çıkarmak isteyen [1] aralıksız değerlerden [0], yeni bir 'weekly_total' değer yaratmak. Daha sonra bu değer dizisini weeklyStats.csv adlı bir dosyada gönderirim. Bu, bir değer sütununu gönderir.
Ancak, ben başka bir dosya (autoCapture.csv) dan başka bir set ile bu değerleri katılmak istiyorum ve diziler olarak zip çalıştığımda hata alıyorum onlar satırları gelen okurlar, böylece:
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>'
Bunun anlamı, değerlerden birinin sıfır olması ve bu nedenle dizeye dönüştürülememesi durumunda, dizi zipinin bir istisna yakalayamayacağı anlamına gelir. Sorun şu ki, problemin (türlerin uyumsuzluğu) olabileceğini düşündüğüm için string ve diziye weekly_total dönüştürmeyi denedim, ama buradan nereye gideceğimi bilmiyorum. Biri yardım edebilir mi?
finalStatsFile.puts col_date+", "+col_constant1+", "+ col_appYear+", "+col_statsDesc+", "+col_constant2+", "+col_keyStats+", "+col_weeklyTotal
dize
yılında
Kaldır sondaki çubuğu 'col_weeklyTotal den |' hattı 42. – mudasobwa
Bana döndüğün için teşekkürler. Ne yazık ki işe yaramadı, bence buna ihtiyacım var | –
Ah koleksiyonuyla ilişkili değişkenleri (bu durumda diziler) kapatmak için üzgünüm, bunların önceki dizenin bir parçası olduğunun farkında değildim. Ardından, önceki satırdan satırbaşı iadesini kaldırmanız yeterlidir. – mudasobwa