【问题标题】:I need to copy 3 columns from a huge csv file into a new csv file. How to do that?我需要将 3 列从一个巨大的 csv 文件复制到一个新的 csv 文件中。怎么做?
【发布时间】:2015-12-02 00:04:35
【问题描述】:

我对红宝石很陌生。这是我的代码:

require 'csv'

csv = CSV.read('C:\Users\hp1\Desktop\Datasets\000.csv', :headers=>true)

p csv['timestamp']
f = File.new('C:\Users\hp1\Desktop\Datasets\Columns_000.csv', 'wb')
    f.puts(p)
    f.close

我想要在这段代码中做的是,我想读取 000.csv 文件,并将名为“timestamp”的列复制到另一个 csv,Columns_000.csv。

但是发生的情况是,它会在我的终端上写入时间戳列的值。相反,我希望它把它们写在新的 csv 上。

我还有 2 列像我想复制到新的 csv 一样。有没有办法将它们全部复制在一起,还是我需要一个一个地复制它们?

【问题讨论】:

    标签: ruby csv export-to-csv


    【解决方案1】:
    COLUMNS = ['timestamp', 'other1', 'other2']
    
    # open new csv for writing
    CSV.open("C:\Users\hp1\Desktop\Datasets\000_out.csv", "wb") do |csv|
      # iterating existing csv rows
      CSV.foreach('C:\Users\hp1\Desktop\Datasets\000.csv', :headers=>true) do |row|
        # select only those specified above columns
        csv << COLUMNS.map { |col| row[col] }
      end
    end
    

    【讨论】:

    • 哇!非常感谢!有用!但是你能帮我理解吗?比如,什么是“
    • 有一位伟大的老师随时准备帮助您理解任何代码;她的名字是 Ruby 文档:Array#&lt;&lt;Array#mapCSV顺便说一句。
    • 哈哈。是的,我在多次询问之前去过这里,你知道的。但她并没有很好地解释。例如,她提到,“#use row here...”;但这里究竟应该如何使用这一行,她没有说。无论如何,非常感谢:)
    猜你喜欢
    • 2022-01-04
    • 1970-01-01
    • 2015-11-21
    • 1970-01-01
    • 2021-05-29
    • 1970-01-01
    • 2020-05-05
    相关资源
    最近更新 更多