Mam skrypt ruby, który utworzy dwa pliki, pobierając i scalając wartości z innego pliku.brak niejawnej konwersji wartości zerowej na błąd łańcucha
#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
jeden plik życzę odejmowanie wartości w wierszu [1] na podstawie wartości w wierszu [0] w celu stworzenia nowej weekly_total 'wartość. Następnie wysyłam tę tablicę wartości w pliku o nazwie weeklyStats.csv. To wyświetli kolumnę wartości fine.
Jednakże chcę dołączyć do tych wartości z innego zestawu z innego pliku (autoCapture.csv) i gdy próbuję je jako zip tablic tak, że czytać w poprzek w odpowiednich wierszy pojawia się błąd:
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>'
Zbieram to oznacza, że zip tablicy nie wychwyci wyjątku, jeśli jedna z wartości jest zerowa i dlatego nie może przekształcić się w ciąg znaków. Problem polega na tym, próbowałem przekonwertować weekly_total na ciąg i tablicę, ponieważ myślałem, że to może być problem (niedopasowanie typów), ale po prostu nie wiem, dokąd się udać. Czy ktoś może pomóc?
Usuwanie początkowych pasek z 'col_weeklyTotal |' w linii 42. – mudasobwa
Dziękuję za skontaktowanie się z nami. Niestety to nie zadziałało, myślę, że potrzebuję tego aby zawrzeć zmienne (w tym przypadku tablice) związane z kolekcją –
Ah, przepraszam, nie zdawałem sobie sprawy, że są one częścią poprzedniego ciągu. Następnie po prostu usuń powrót karetki z poprzedniego wiersza. – mudasobwa