代码之家  ›  专栏  ›  技术社区  ›  Nomura Nori

如何使用rails在csv中按列名获取值

  •  -1
  • Nomura Nori  · 技术社区  · 7 年前

    我想在rails中按列名(而不是索引)获取值

    stopid,stopname,location
    1,test1,loc1
    2,test2,loc2
    
    CSV.foreach( input_stops, encoding:'iso-8859-1:utf-8' ) do |row|
      p row['stopid']
    end
    

    但没用。 有什么解决办法吗? 谢谢

    1 回复  |  直到 7 年前
        1
  •  1
  •   Jagdeep Singh    7 年前

    你只需要包括 headers: true 为此:

    CSV.foreach(input_stops,
                encoding: 'iso-8859-1:utf-8',
                headers: true) do |row|
      p row['stopid']
    end
    
    # Prints:
    "1"
    "2"
     => nil
    

    或者如果要将标题用作符号:

    CSV.foreach(input_stops,
                encoding: 'iso-8859-1:utf-8',
                headers: true,
                header_converters: :symbol) do |row|
      p row[:stopid]
    end