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

zee*_*eez 1 ruby csv

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

例如,假设我的标题是

<random string>, head1, head2, headN
Run Code Online (Sandbox Code Playgroud)

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

time, head1, head2, headN
Run Code Online (Sandbox Code Playgroud)

zee*_*eez 6

我没有在示例中找到这个文档,仅在源代码中csv.rb.转换器接收可选的第二个参数field_info.根据该文件,这是一个Struct与领域index,line以及header:

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

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

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