Можно манипулировать нужным столбцом непосредственно в объекте FasterCSV, вместо того, чтобы создавать новый столбец и затем пытаться заменить старый на новый.

и относительно новым для Ruby, я пытаюсь выяснить, как сделать следующее с помощью FasterCSV: открыть файл CSV, выбрать столбец по заголовку, в этом столбце заменить только все вхождения строки x на y, выписать новый файл чтобы вывести. Следующий код почти работает:

filename = ARGV[0]
csv = FCSV.read(filename, :headers => true, :header_converters => :symbol, :return_headers => true, :encoding => 'u') 
mycol = csv[:mycol]
# construct a mycol_new by iterating over mycol and doing some string replacement
puts csv[:mycol][0] # produces "MyCol" as expected
puts mycol_new[0] # produces "MyCol" as expected
csv[:mycol] = mycol_new
puts csv[:mycol][0] # produces "mycol" while "MyCol" is expected
csv.each do |r|
  puts r.to_csv(:force_quotes => true)
end

Единственная проблема заключается в том, что есть преобразование заголовка, где я не ожидаю этого. Если заголовок выбранного столбца - «MyCol» до замены столбцов в таблице csv, то впоследствии это «mycol» (см. Комментарии в коде). Почему это происходит? И как этого избежать? Благодарю.

Ответы на вопрос(2)

Ваш ответ на вопрос