Я пытаюсь вернуть значение конкретной ячейки на основе двух критериев.Parse CSV Data with Ruby
Логика:
If ClientID = 1 and BranchID = 1, puts SurveyID
Использование Руби 1.9.3, я хочу, чтобы в основном смотреть через файл первенствовать и для двух конкретных значений, расположенных в столбце ClientID
и BranchID
, возвращает соответствующее значение в SurveyID
колонка.
Это то, что у меня есть до сих пор, которое я нашел во время онлайн-поиска. Это казалось многообещающим, но не повезло:
require 'csv'
# Load file
csv_fname = 'FS_Email_Test.csv'
# Key is the column to check, value is what to match
search_criteria = { 'ClientID' => '1',
'BranchID' => '1' }
options = { :headers => :first_row,
:converters => [ :numeric ] }
# Save `matches` and a copy of the `headers`
matches = nil
headers = nil
# Iterate through the `csv` file and locate where
# data matches the options.
CSV.open(csv_fname, "r", options) do |csv|
matches = csv.find_all do |row|
match = true
search_criteria.keys.each do |key|
match = match && (row[key] == search_criteria[key])
end
match
end
headers = csv.headers
end
# Once matches are found, we print the results
# for a specific row. The row `row[8]` is
# tied specifically to a notes field.
matches.each do |row|
row = row[1]
puts row
end
Я не знаю, последний бит кода, следующего matches.each do |row|
является недействительным, но я оставил его в в надежде, что это будет иметь смысл для кого-то другого.
Как я могу написать puts surveyID if ClientID == 1 & BranchID == 1
?
Это сработало отлично. Спасибо за помощь! – Luigi