zoukankan      html  css  js  c++  java
  • Processing中获取表格数据( .tsv.csv )的经验分享

    在日常收集数据的需求中,会有很多场合用到表格数据类型,如.tsv和.csv,一来高效查看和编辑,二来数据条理清晰,导入数据结构方便。在Prcocessing中帮我预留好了loadTable()loadStrings()等方法,方便读取相应字符串。不过这里有些细节值得关注,笔者简单说一说。


    综述

    首先.tsv.csv本质上就是普通文本字符串,它够简单够易读写。

    TSV【tab separated values】即“制表符分隔值”

    每一个制表符预留位置为存储字符串的单元,或者可以理解为每字符串(单位数据)之间都由一个制表符来分割,如:

    noshape	0	无
    line	1	线
    rect	2	框	矩
    circle	3	圆
    point	0	点
    box	5	立	方
    sphere	6	球
    

    CSV 【comma separated values】即“逗号分隔值”

    同上,就是每一个逗号(,)将单位数据分割开,如:

    x,y,diameter,name
    380.0,238.0,78.13368,Blah
    362.0,162.0,69.753784,Blah
    509.0,162.0,51.126663,Blah
    387.0,224.0,64.408646,Blah
    141.0,188.0,78.59824,Blah
    252.0,122.0,41.399323,Blah
    325.0,155.0,53.199966,Blah
    

    关于.tsv

    制表符分隔值需要注意每一个制表符都关系到它之后的值,什么意思呢?看下面的例子。

    noshape	0	无
    line	1	线
    rect	2	框	矩
    

    我在Processing中使用loadStrings()来读取它,代码部分如下:

        lines = loadStrings(addr);
        for (int i = 0; i < lines.length; i++) {
          
          String[] pieces = split(lines[i], TAB); // Load data into array
          println(i+": "+pieces.length);
      
        }
    

    你认为输出多少值呢?正常情况下应该是

    0: 3
    1: 3
    2: 4
    

    可是有时候会是这个结果:

    0: 4
    1: 4
    2: 4
    

    ?啊?what?原因在于第一行和第二行最后还留了一个制表符,如果留着就会多出一个片段(split)。删掉就得正常切分数。制表符级不容易发现,要注意了。

    关于.csv

    逗号分隔值也可以使用loadTable()来读取,因为它就是一般的表格数据。表格中还可以增设行标、纵标,方便管理、读取和写入。实际上loadTable()也可以读取其他格式,比如.tsv,只是如何提取数据是需要设计好的,详情请看官方参考的说明:
    https://processing.org/reference/loadTable_.html


    小结

    基本数据的读写是很有必要熟练掌握的,虽然预留的函数很简单,但可以解决大部分问题了。巧用这些基本IO操作,用Processing何尝不能开发一些小工具方便以后的使用呢?

  • 相关阅读:
    ES6语法记录
    关于Vue中 render: h => h(App) 的具体含义的理解
    在Vue中结合render函数渲染指定组件
    访问者模式(Visitor)_java实现
    自底向上集成 Bottom-Up
    基于功能集成 Function-Based
    分层集成(线性关系) Layers
    持续集成(高频集成、每日集成) Continuous/High-frequency
    Selenium实现点击click()
    Selenium自动化之点击下拉框选项操作
  • 原文地址:https://www.cnblogs.com/sharpeye/p/14649476.html
Copyright © 2011-2022 走看看