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"]
  • 相关阅读:
    node连接数据库(express+mysql)
    Apache与Tomcat有什么关系和区别
    tomcat部署简单的html静态网页
    Vue项目webpack打包部署到服务器
    windows下vue+webpack前端开发环境搭建及nginx部署
    DIV 边框重叠 像素变粗 解决办法
    基于iscroll实现下拉和上拉刷新
    css图片居中(水平居中和垂直居中)
    nodejs分页类
    事件--键盘事件
  • 原文地址:https://www.cnblogs.com/wf0117/p/9080726.html
Copyright © 2011-2022 走看看