【问题标题】:Appending text by column to the same row for a CSV file on Ruby 2.4将文本逐列附加到 Ruby 2.4 上 CSV 文件的同一行
【发布时间】:2017-11-15 04:31:05
【问题描述】:

我有一个包含标题和 1 行数据的 CSV 文件:

我想按列名(标题)附加数据,但附加到同一行(行号 1)

我分别插入每列数据。

所以最后,我将有一个包含标题和 1 行数据的文件

例如:

header1,header2

data1,data2 

我正在使用

 def insert_info_csv(header,values)
  headers=['1', '2', '3', '4']
  file='report_test.csv'

  CSV.open('report_test.csv','a') do |csv|
    row=CSV::Row.new(headers,[])
    row[header]=values (where I insert the data)
    csv << row
  end
  end

我的问题是每个数据都写在不同的行中,例如:

 Header1, header2

 data1,

       ,data2

感谢您的帮助。

【问题讨论】:

  • 你能提供你实际将数据写入最终文件的代码吗?
  • 您是否以某种方式遍历标题?
  • 我已经在我的帖子中包含了整个函数。
  • 不遍历标题。
  • 您需要循环访问headers 并为要插入的每一行设置值

标签: ruby-on-rails ruby csv


【解决方案1】:

根据您的示例,很明显您要在每个方法调用的 csv 文件中附加一行。
如果您想将数据附加到现有行(按标题),您需要添加一些标识符并通过它获取。
您可以通过向其传递哈希来为每个方法调用添加整行。

hash = {
  header_a: 'value_a',
  header_b: 'value_b' 
}  

def insert_info_csv(info_hash)
 headers=['header_a', 'header_b']
 file='report_test.csv'

 CSV.open('report_test.csv','a') do |csv|
   row=CSV::Row.new(headers,[])
   info_headers.each do |k,v|
     row[k] = v
     csv << row
   end
 end
end

【讨论】:

    猜你喜欢
    • 2021-09-03
    • 2021-02-28
    • 2012-04-06
    • 2017-04-11
    • 1970-01-01
    • 1970-01-01
    • 2014-05-03
    • 2016-04-08
    • 2014-05-13
    相关资源
    最近更新 更多