当前位置: 首页 > news >正文

解析主子格式的 csv

某 csv 文件不规范,奇数行为主表记录,一行对应一条记录,有 3 个字段 idUniversity、nameOfUniversity、noOfBuses,其中第 3 个字段是冗余的,用来指明偶数行上子表记录的记录数量。偶数行为子表记录,一行有 N 项,每两项对应一条记录,有 2 个字段 idBus,noOfBus。

1,Harvard University,2

1,140,2,56

2,Massachusetts Institute of Technology,2

1,240,5,56

3,University of California Berkeley,3

1,112,2,56,3,28

4,Columbia University,4

1,84,2,84,3,84,7,28

要求:用 Java 解析主子表,数据结构要方便后续计算。

idUniversitynameOfUniversitynoOfBuses
1Harvard UniversityidBusnoOfBus
1140
256
2Massachusetts Institute of TechnologyidBusnoOfBus
1240
556
3University of California BerkeleyidBusnoOfBus
1112
256
328
4Columbia UniversityidBusnoOfBus
184
284
384
728

编写SPL代码

1=file("d:/data.csv").import@cw()
2=A1.group((#-1)\2)
3=A2.new(~1(1):idUniversity,~1(2):nameOfUniversity,~2.group((#-1)\2).new(~1:idBus,~2:noOfBus):noOfBuses)

A1:将文件解析为二维序列,分隔是逗号。

A2:每两行分一组。

A3:将每组的第 1 行解析为主表记录,第 2 行解析为多条子表记录,作为主表的字段。

上面 SPL 代码已经建立了主子关联,可以用点号访问子表,比如查询第 2 条主表记录的子表里 idBus 大于 2 的记录,直接写:=A3(4).noOfBuses.select(idBus>2)

Java 集成 SPL 可参考 Java 如何调用 SPL 脚本

SPL开源地址

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 基于Java+ssm+jsp开发的相亲交友网站管理系统
  • Oracle rman 没有0级时1级备份和0级大小一样,可以用来做恢复 resetlogs后也可以
  • 源代码如何防泄漏?用对软件真的很重要!
  • BRAS介绍
  • 中间件的学习理解总结
  • Go语言中的队列与栈:基础与实践
  • C语言深入理解指针四(17)
  • 国外也开始流行“卷”了吗
  • 抖音ip属地怎么改变到别的城市
  • 使用LSTM(长短期记忆网络)模型预测股票价格的实例分析
  • JsonCpp源码分析——Writer
  • 苹果首款AI手机发布!iPhone 16全新AI功能体验感拉满
  • 【MATLAB】模拟退火算法
  • 软硬链接 动静态库(深入地址空间)
  • Qt:解决player->duration()第一次获取媒体时长为0的问题
  • 【Leetcode】101. 对称二叉树
  • 分享的文章《人生如棋》
  • [ JavaScript ] 数据结构与算法 —— 链表
  • “寒冬”下的金三银四跳槽季来了,帮你客观分析一下局面
  • 【React系列】如何构建React应用程序
  • el-input获取焦点 input输入框为空时高亮 el-input值非法时
  • ES6简单总结(搭配简单的讲解和小案例)
  • JavaScript-Array类型
  • PAT A1092
  • React的组件模式
  • 基于Android乐音识别(2)
  • 京东美团研发面经
  • 看图轻松理解数据结构与算法系列(基于数组的栈)
  • 类orAPI - 收藏集 - 掘金
  • 悄悄地说一个bug
  • 人脸识别最新开发经验demo
  • 容器服务kubernetes弹性伸缩高级用法
  • 使用 QuickBI 搭建酷炫可视化分析
  • 使用Tinker来调试Laravel应用程序的数据以及使用Tinker一些总结
  • 腾讯优测优分享 | 你是否体验过Android手机插入耳机后仍外放的尴尬?
  • 译有关态射的一切
  • 3月27日云栖精选夜读 | 从 “城市大脑”实践,瞭望未来城市源起 ...
  • 阿里云IoT边缘计算助力企业零改造实现远程运维 ...
  • ​探讨元宇宙和VR虚拟现实之间的区别​
  • ​学习笔记——动态路由——IS-IS中间系统到中间系统(报文/TLV)​
  • # Swust 12th acm 邀请赛# [ A ] A+B problem [题解]
  • #单片机(TB6600驱动42步进电机)
  • (1)(1.9) MSP (version 4.2)
  • (4)logging(日志模块)
  • (poj1.3.2)1791(构造法模拟)
  • (react踩过的坑)Antd Select(设置了labelInValue)在FormItem中initialValue的问题
  • (附源码)ssm码农论坛 毕业设计 231126
  • (六)激光线扫描-三维重建
  • (四) 虚拟摄像头vivi体验
  • (转) ns2/nam与nam实现相关的文件
  • (转载)跟我一起学习VIM - The Life Changing Editor
  • ***详解账号泄露:全球约1亿用户已泄露
  • ..回顾17,展望18
  • .equals()到底是什么意思?
  • .Net mvc总结