使用Ruby CSV更改特定列的标题

时间:2017-02-06 20:35:55

标签: ruby csv

可以使用header_converters和lambda表达式转换CSV标头,如“Using Ruby CSV header converters”所示。但是,有没有办法专门转换说第一列,并保持其他列不变?

例如,假设我的标题是

<random string>, head1, head2, headN

<random string>的值可能会在CSV文件之间发生变化,我想将此标题更改为某个预定字符串,以便标题变为

time, head1, head2, headN

1 个答案:

答案 0 :(得分:5)

我没有在示例中找到此文档,仅在source of csv.rb中。转换器接收可选的第二个参数field_info。根据{{​​3}},这是一个Struct,其字段为indexlineheader

  • index:其行中字段的从零开始的索引。
  • line:此行来自的数据源行。
  • header:列的标题(如果可用)。

举个例子,这会将第一个标头转换为"time"并保持其他标题不变:

CSV.new(f, header_converters: lambda{|h, field_info| field_info.index == 0 ? "time" : h })