在日常收集数据的需求中,会有很多场合用到表格数据类型,如.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何尝不能开发一些小工具方便以后的使用呢?

Processing中获取表格数据( .tsv\.csv )的经验分享的更多相关文章

  1. 获取表格数据转换为JSON字符串

    核心代码JavaScript代码: 方法一 function sc () { var myTable=document.getElementById("myTable"); //获 ...

  2. 通过DialogFragment从DatePicker或TimePicker中获取日期数据

    通过DialogFragment从DatePicker或TimePicker中获取日期数据 一个activity类,里面存有date和time的变量,想通过dialogfragment的方式获取用户输 ...

  3. 使用phpword获取doc中的表格数据

    1. 首先确定使用phpword是可以读取word文档中表格里面的数据, 使用的phpword版本0.17.0 2.理解word文档内容的存储逻辑规则(这里只做简单概述) 一般做博文喜欢直接贴代码,直 ...

  4. 【在网页中获取截图数据】Chrome和Firefox下的实战经验

    [转载自我在segmentfault的专栏:https://segmentfault.com/a/1190000004584071] 最近在实现一个功能,需求如下: 前提:当前页面无弹窗 页面任意位置 ...

  5. Android中获取网络数据时的分页加载

    //此实在Fragment中实现的,黄色部分为自动加载,红色部分是需要注意的和手动加载,    蓝色部分是睡眠时间,自我感觉不用写  ,还有就是手动加载时,不知道为什么进去后显示的就是最后一行,求大神 ...

  6. Jquery DataTables 获取表格数据及行数据

    注意table变量是 1.jQuery DataTables 行号获取 $("#example tbody tr").on("click", function( ...

  7. Jquery DataTables 获取表格数据

    1.获取表格所有数据 function getTableContent(){ var nTrs = table.fnGetNodes();//fnGetNodes获取表格所有行,nTrs[i]表示第i ...

  8. Delphi读取不Word中不规则表格数据并转换成标准表格

    程序需要,需要将word中不规则的表格数据转换为标准的表格,即合并的单元格按正常格式解析,word中的表格格式如下: 解析后数据如下: 借鉴了网上代码,如下处理: procedure TfrmMain ...

  9. android开发中获取<meta-data>数据

    在 AndroidManifest.xml 中,<meta-data>元素是一个键值对,往往被包含在<application> .<activity>.<se ...

  10. vuex中获取的数据使用v-model绑定出问题

    get selectedProp() { return this.$store.state.selectedProp; } 获取的数据selectedProp直接绑定在表单元素上会有错,因为不能直接对 ...

随机推荐

  1. GooseFS 统一命名空间 | 加速存储业务访问

    01 前言 ​ GooseFS是 腾讯云存储团队推出的分布式缓存方案,主要针对需要缓存加速的数据湖业务场景,提供基于对象存储COS服务的近计算端数据加速层. 统一命名空间是GooseFS提供的透明命名 ...

  2. 聊一聊 C#线程池 的线程动态注入 (上)

    一:背景 1. 讲故事 在线程饥饿的场景中,我们首先要了解的就是线程是如何动态注入的?其实现如今的ThreadPool内部的实现逻辑非常复杂,而且随着版本的迭代内部逻辑也在不断的变化,有时候也没必要详 ...

  3. 【XML编程与WEB服务】XML入门

    目录 XML -入门 XML文档组成 XML文档规则 XML元素 特殊字符数据引用 CDATA段 空白处理 XML -入门 XML(Extensible Markup Language):可扩展的标记 ...

  4. python中replace不能把 \n 替换过去

    问题 简要描述:python中,字符串的 replace 不能把 \n 符号带过去 截图说明 暂时的解决办法 在replace之前,先把要替换的字符串的 \n 去掉

  5. 执行docker ps时提示"dial unix /var/run/docker.sock: connect: permission denied"

    0. 创建docker用户组 sudo groupadd docker 1. 将当前用户加入docker组 # sudo gpasswd -a $USER docker $ sudo usermod ...

  6. java通过apache poi框架读取2007版Excel文件

    java系读写excel文件既可以用jxl库,也可以用POI库,但是,jxl库只支持低版本的excel2003,不支持更高版本,无法直接输出*.xlsx文件,只能输出*.xls文件,另外,更新也不频繁 ...

  7. ArchLinux安装后常见问题的解决

    Q:UEFI引导grub-install报错:variables are not support on this system A:进入安装u盘的时候是传统引导模式,传统模式下无法安装UEFI启动,解 ...

  8. Pod的优雅上下线

    Pod的优雅上下线依赖k8s的监控检查机制,以及 Pod lifecycle Hooks,通过这些kubernetes的机制,配合服务发现的流量管理机制,实现业务的优雅上下线. 基础概念 Pod 健康 ...

  9. MSXML2.DOMDocument加载Internet资源

    MSXML2.DOMDocument加载Internet资源 The information in this article applies to: Microsoft XML, versions 2 ...

  10. 一致性hash和普通hash和hash槽

    普通hash Hash函数:一般翻译做散列.杂凑,或音译为哈希,是把任意长度的输入(又叫做预映射pre-image)通过散列算法变换成固定长度的输出,该输出就是散列值.碰撞(冲突):如果两个关键字通过 ...