我目前有一个单列csv文件,如:["firstname lastname", "firstname lastname", ...]
。
我想创建一个csv文件,例如作为名字的第一个字母的["f.lastname", "f.lastname"...]
;f
。
你知道我该怎么做吗?
更新
好吧,好吧,我觉得我离你们很近了,这是我到目前为止得到的:
require 'csv'
filename = CSV.read("mails.csv")
mails = []
CSV.foreach(filename) do |col|
mails << filename.map { |n| n.sub(/\A(\w)\w* (\w+)\z/, '\1. \2') }
end
puts mails.to_s
但我还是有个错误。
更新2
好的,这很好:
require 'csv'
mails = []
CSV.foreach('mails.csv', :headers => false) do |row|
mails << row.map(&:split).map{|f,l| "#{f[0]}.#{l}@mail.com" }
end
File.open("mails_final.csv", 'w') {|f| f.puts mails }
puts mails.to_s
非常感谢你们;)
最佳答案
不使用正则表达式的解决方案:
ary = ["firstname lastname", "firstname lastname"]
ary.map(&:split).map{|f, l| "#{f[0]}. #{l}" }
#=> ["f. lastname", "f. lastname"]