可以使用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)
我没有在示例中找到这个文档,仅在源代码中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)