【问题标题】:Change header of specific column with Ruby CSV使用 Ruby CSV 更改特定列的标题
【发布时间】:2017-02-06 20:35:55
【问题描述】:

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

例如,假设我的标题是

<random string>, head1, head2, headN

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

time, head1, head2, headN

【问题讨论】:

  • 最好提供输入 CSV 和预期输出 CSV 的示例,而不是让人们去阅读其他问题。

标签: ruby csv


【解决方案1】:

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

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

例如,这会将第一个标头转换为"time",而其他标头保持不变:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-12
    • 2014-01-17
    • 1970-01-01
    相关资源
    最近更新 更多