可以使用header_converters
和lambda表达式转换CSV标头,如“Using Ruby CSV header converters”所示。但是,有没有办法专门转换说第一列,并保持其他列不变?
例如,假设我的标题是
<random string>, head1, head2, headN
<random string>
的值可能会在CSV文件之间发生变化,我想将此标题更改为某个预定字符串,以便标题变为
time, head1, head2, headN
答案 0 :(得分:5)
我没有在示例中找到此文档,仅在source of csv.rb
中。转换器接收可选的第二个参数field_info
。根据{{3}},这是一个Struct
,其字段为index
,line
和header
:
index
:其行中字段的从零开始的索引。line
:此行来自的数据源行。header
:列的标题(如果可用)。举个例子,这会将第一个标头转换为"time"
并保持其他标题不变:
CSV.new(f, header_converters: lambda{|h, field_info| field_info.index == 0 ? "time" : h })