zoukankan      html  css  js  c++  java
  • ruby 操作csv

    1.读取csv

    • 文件中读取:一次读入全部(设置headers使  CSV#shift()  以CSV::Row对象返回而不是数组;使  CSV#read()  返回 CSV::Table 对象而不是数组)
      
      
      CSV.read('test.csv') #=> Array
      #headers默认为false,如果设置为true,csv的第一行将被视为标题
      CSV.read('test.csv', headers:true) #=> CSV::Table
      
      #headers设置为数组,这个数组将被作为标题
      CSV.read('test.csv', headers:[1,2,3,4,5]) 
      
      #headers设置为字符串,这个字符串内容将被作为标题
      CSV.read('test.csv', headers:"1,2,3,4,5")
    • 文件中读取:一次读入一行

      #由于headers配置,返回类型发生变化(这个方法默认为第一行是标题,不会进行返回)
      CSV.foreach 'test.csv' do |row|
        puts row.class #=> Array
      end
      
      CSV.foreach('test.csv', headers:true) do |row|
        puts row.class #=> CSV::Row
      end
      
      #return_headers:true 返回标题
      CSV.foreach('test.csv', return_headers:true) do |row|
        p row  #=> 返回Array
      end
    • 字符串中读取:一次读取一行
      CSV.parse("CSV,data,String") do |row|
        # use row here...
      end
    • 字符串中读取:全部读取
      CSV.parse("CSV,data,String")
      
      
      #[]方法需要返回的类型为CSV::ROW;所以设置参数headers:true
      content = File.read('data.csv')
      csv = CSV.parse(content, headers:true)
      sum = 0
      csv.each do |row|
        sum += row['id'].to_i
      end
      puts sum

    2.写入csv

    • 写入文件
      CSV.open("path/to/file.csv", "wb") do |csv|
        csv << ["row", "of", "CSV", "data"]
        csv << ["another", "row"]
        # ...
      end
    • 写入字符串
      csv_string = CSV.generate do |csv|
        csv << ["row", "of", "CSV", "data"]
        csv << ["another", "row"]
        # ...
      end
      #=> "row,of,CSV,data another,row "
        

    3.单行相互转换

    • csv_string = ["CSV", "data"].to_csv   #=> "CSV,data
      "
      csv_array  = "CSV,String".parse_csv   #=> ["CSV", "String"]
  • 相关阅读:
    4 linux上运行crm&uwsgi
    Vue 目录
    vue -(滚动播放-全屏展示)
    Chrome 调试技巧
    Vue 遇到的坑
    9 matplotlib
    Maven
    Dev-C++黑暗主体和代码高亮配置
    Git操作:一次push把代码提交到两个仓库
    windows server 2012 r2 快速启动 部署remoteapp 显示服务器有挂起的重启,怎么解决?
  • 原文地址:https://www.cnblogs.com/wf0117/p/9080726.html
Copyright © 2011-2022 走看看