在日常收集数据的需求中,会有很多场合用到表格数据类型,如.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. 各版本jdk百度云下载,包括linux版和windows版

    并不是越新的版本就一定越好,请先考虑jdk的版本是否跟你的开发环境有版本冲突问题. 2021-11-4更新 ps:从官网下载实在是太慢了!! 官网链接:https://www.oracle.com/j ...

  2. 【Python基础练习】实验3:列表、字典、集合

    实验3:列表.字典.集合 姓名:萌狼蓝天 时间:2023年11月6日 Python:3.12 博客:https://wwww.mllt.cc 实验目的 (1)了解列表.元组.字典和集合的概念 (2)学 ...

  3. 【Javaweb】【Servlet】简单验证用户的登陆

    点击查看代码 | jsp <%-- Created by IntelliJ IDEA. User: xrilang Date: 30/12/2021 Time: 17:31 --%> &l ...

  4. 【bug记录】AttributeError: 'CollectReport' object has no attribute 'description'

    问题截图 问题原因 有完全重复用例,因为写用例的时候,为了图方便,直接复制的,还没来得及改,然后,用pytest运行的时候,就报这个错误了. 问题解决 去掉重复就行了

  5. gitlab-runner register

    [root@g ~]# gitlab-runner register Runtime platform arch=amd64 os=linux pid=23614 revision=ac8e767a ...

  6. 解决docker 容器设置中文语言包出现的问题_docker

    https://www.anquanclub.cn/5821.html 这篇文章主要介绍了解决docker 容器设置中文语言包出现的问题,具有很好的参考价值,希望对大家有所帮助.一起跟随小编过来看看吧 ...

  7. Qt编写安防视频监控系统56-数据库分页

    一.前言 在视频监控系统中也需要对日志记录进行查询显示,有时候查询到的记录并不能一页显示完,最好的做成翻页显示,如果所有记录都在一页显示通过滚动条查看,不是很符合用户习惯,比如搜索引擎的记录也都是分页 ...

  8. Qt音视频开发19-海康sdk录像存储

    一.前言 关于调用海康sdk来进行录像存储,整体的框架架构处理流程沿袭了之前vlc内核.ffmpeg内核.mpv内核的做法,定时存储这块,开个定时器判断,到了时间则先关闭原来的录像存储,然后在开始一个 ...

  9. [转]IDEA2020.2.3中创建JavaWeb工程的完整步骤记录

    原文链接: IDEA2020.2.3中创建JavaWeb工程的完整步骤记录

  10. 今天记录一下小程序使用微信客服api,而不是小程序客服

    小程序客服缺少很多东西,并且只能使用button的开放能力,所以尝试使用一下微信客服,自己开发客服又比较麻烦,秉着能免费绝不花钱的想法,接下来就直接写代码,也就是api,记录下来方便使用 wx.ope ...