2017-06-20 87 views
0

我目前有这个脚本可以根据给定的CSV生成用户名。如何将这些结果打印到控制台,而不是将这些结果写入新的CSV?从Ruby结果生成CSV

这是我目前拥有的脚本,没有错误地运行。我假设我是否在do | row |中写入新的CSV阻止它将创建x数量的我不想要的新文件。

require 'csv' 

CSV.foreach('data.csv', :headers => true) do |row| 
    id = row['id'] 
    fn = row['first_name'] 
    ln = row['last_name'] 
    p fn[0] + ln + id[3,8] 
end 
+1

_Sidenote:_ **从来没有**使用'+'在Ruby中连接字符串,这是一种代码异味。 – mudasobwa

回答

3

只是管理的CSV文件读取周围写:

CSV.open("path/to/file.csv", "wb") do |csv| 
    CSV.foreach('data.csv', :headers => true) do |row| 
    id = row['id'] 
    fn = row['first_name'] 
    ln = row['last_name'] 
    csv << [fn[0], ln, id[3,8]] 
    # or, to output it as a single column: 
    # csv << ["#{fn[0]}#{ln}#{id[3,8]}"] 
    end 
end 

Writing CSV to a file

+0

而不是它输出到三个不同的列如何才能使它,因此它是一个字符串?我尝试用加号替换逗号,但得到一个零错误。 –

+2

已更新答案::使用字符串插值。 – mudasobwa