删除CSV文件中的空格

xds*_*emx 12 ruby csv parsing rake-task

我有一个额外的空格字符串:

First,Last,Email  ,Mobile Phone ,Company,Title  ,Street,City,State,Zip,Country, Birthday,Gender ,Contact Type
Run Code Online (Sandbox Code Playgroud)

我想解析这一行并删除空格.

我的代码看起来像:

namespace :db do
task :populate_contacts_csv => :environment do

require 'csv'

csv_text = File.read('file_upload_example.csv')
  csv = CSV.parse(csv_text, :headers => true)
    csv.each do |row|
      puts "First Name: #{row['First']} \nLast Name: #{row['Last']} \nEmail: #{row['Email']}"
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

Mik*_*yth 49

@prices = CSV.parse(IO.read('prices.csv'), :headers=>true, 
   :header_converters=> lambda {|f| f.strip},
   :converters=> lambda {|f| f ? f.strip : nil})
Run Code Online (Sandbox Code Playgroud)

nil测试被添加到行而不是标头转换器,假设标头永远不是nil,而数据可能是,而nil没有strip方法.我真的很惊讶,AFAIK,:strip不是预定义的转换器!

  • 而不是使用语法 `lambda {|f| f.strip}`,你可以使用 `->` 语法,如:`->(f) {f.strip}` (2认同)
  • 同样来自 ruby​​ 2.3,`->(f) { f&.strip }` (2认同)

Ant*_*rto 4

你可以strip先你的哈希:

csv.each do |unstriped_row|
  row = {}
  unstriped_row.each{|k, v| row[k.strip] = v.strip}
  puts "First Name: #{row['First']} \nLast Name: #{row['Last']} \nEmail: #{row['Email']}"
end
Run Code Online (Sandbox Code Playgroud)

也进行了编辑以去除哈希键