Есть несколько вещей, которые вы можете изменить в строке инициализации, которые помогут. Изменения:
csv = FCSV.read(filename, :headers => true, :return_headers => true, :encoding => 'u')
до:
csv = FCSV.read(filename, :headers => true, :encoding => 'u')
Я использую CSV, который является только FasterCSV и является частью Ruby 1.9. Это создаст файл CSV в текущем каталоге с именем «temp.csv» с измененным полем «FName»:
require 'csv'
data = "ID,FName,LName\n1,mickey,mouse\n2,minnie,mouse\n3,donald,duck\n"
# read and parse the data
csv_in = CSV.new(data, :headers => true)
# open the temp file
CSV.open('./temp.csv', 'w') do |csv_out|
# output the headers embedded in the object, then rewind to the start of the list
csv_out << csv_in.first.headers
csv_in.rewind
# loop over the rows
csv_in.each do |row|
# munge the first name
if (row['FName']['mi'])
row['FName'] = row['FName'][1 .. -1] << '-' << row['FName'][0] << 'ay'
end
# output the record
csv_out << row.fields
end
end
Вывод выглядит так:
ID,FName,LName
1,ickey-may,mouse
2,innie-may,mouse
3,donald,duck