解析主子格式的 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开源地址

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/53667.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于SpringBoot+Vue+MySQL的垃圾分类回收管理系统

系统展示 用户前台界面 管理员后台界面 系统背景 二十一世纪互联网的出现,改变了几千年以来人们的生活,不仅仅是生活物资的丰富,还有精神层次的丰富。在互联网诞生之前,地域位置往往是人们思想上不可跨域的鸿沟,信息的…

Uniapp + Vite + Vue3 + uView + Pinia 实现自定义底部 Tabbar(最新保姆级教程)

Uniapp Vite Vue3 uView Pinia 实现自定义底部 Tabbar(最新保姆级教程) 1、效果展示2、环境准备2.1 新建 uniapp 项目2.2. 安装 uView2.3 安装 pinia 3. 配置环境4. 创建目录结构5、编写 pages.json 页面路由6、编写 tabbar.js 状态数据7、编写 tabb…

VUE面试题1*

scss是什么? 预处理css,把css当前函数编写,定义变量,嵌套. vue-router有哪几种导航钩子? 三种。 一种是全局导航钩子:router.beforeEach(to,from,next),作用:跳转前进行判断拦截。 第二种&a…

软件测试之压力测试

🍅 点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快 压力测试 压力测试是一种软件测试,用于验证软件应用程序的稳定性和可靠性。压力测试的目标是在极其沉重的负载条件下测量软件的健壮性和错误处理能力&…

日本IT工作内容---一篇梗概

日本IT工作现场是一个充满活力、技术导向且多元化的工作环境。以下是对日本IT工作内容的详细概述: 1. 软件开发(Software Engineering, SE) 主要任务:编写、测试和维护软件,以满足客户需求。这包括使用多种编程语言和…

Win10下借助CMake编译OpenMVS

笔者在编译OpenMVS的过程十分曲折。刚开始借助CMake编译,能够把与库生成相关的工程编译出来,但是与可执行文件相关的工程会报错;后来参考官方教程借助VCPKG编译,发现VCPKG并没有想中强大、好用,最终也是遇到了各种问题没有编译成功。但是,笔者在解决问题的过程发现了问题…

linux中vim介绍以及常用命令大全

前言 在Linux系统中,Vim是一个功能强大的文本编辑器,它广泛应用于服务器管理、脚本编写和程序开发中。Vim拥有两种模式:命令模式和插入模式。了解和掌握常用的Vim命令对于提高文本编辑效率至关重要。本文将详细介绍Vim的常用命令&#xff0c…

HCIP--<OSPF2>

目录 一,OSPF的不规则区域 1)远离骨干区域的非骨干区域 2)不连续骨干区域(和上面一样) 二,OSPF数据库表 三。优化OSPF的LSA(缺少LSA的更新量) [1]手工汇总:减少骨干区域的LSA [2]特殊区域&…

编程新纪元:AI如何成为你的编程伙伴

随着人工智能技术的不断进步,我们正步入一个编程的新纪元。在这个时代,AI不仅仅是一个工具,更是程序员的伙伴。它通过提供智能辅助、自动化编码和增强开发效率,正在改变我们编写和理解代码的方式。本文将探讨AI如何成为程序员的得…

【关爱多系统萎缩患者】必知!这些维生素是健康守护神

亲爱的朋友们,今天我们来聊聊一个需要更多社会关爱与理解的群体——多系统萎缩(MSA)患者。面对这一复杂而罕见的疾病,科学合理的饮食调整,尤其是维生素的补充,显得尤为重要。让我们一起成为他们健康路上的温…

深入CSS 布局——WEB开发系列29

CSS 页面布局技术允许我们拾取网页中的元素,并且控制它们相对正常布局流、周边元素、父容器或者主视口/窗口的位置。 一、正常布局流(Normal Flow) CSS的布局基础是“正常流”,也就是页面元素在没有特别指定布局方式时的默认排列…

P5734 【深基6.例6】文字处理软件

1. string的函数 #include <bits/stdc.h> using namespace std; int main() {int n,m; cin >> n;string s, a, b, c;cin >> s;for (int i 0; i < n; i) {cin >> m;if (m 1) {cin >> a;s a;cout << s << endl;}if (m 2) {int …

自然语言处理系列六十三》神经网络算法》LSTM长短期记忆神经网络算法

注&#xff1a;此文章内容均节选自充电了么创始人&#xff0c;CEO兼CTO陈敬雷老师的新书《自然语言处理原理与实战》&#xff08;人工智能科学与技术丛书&#xff09;【陈敬雷编著】【清华大学出版社】 文章目录 自然语言处理系列六十三神经网络算法》LSTM长短期记忆神经网络算…

使用 three.js 实现一个非常漂亮的围栏效果,在线预览 运行可使用此处地址

使用 three.js 实现一个非常漂亮的围栏效果&#xff0c;在线预览 运行可使用此处地址 https://threehub.cn/#/codeMirror?navigationThreeJS&classifyshader&idfenceWall import * as THREE from "three"; import { OrbitControls } from "three/addo…

Windows一键安装Mysql数据库|非官方复杂安装,解压即可,操作简单

我们都知道在官方安装mysql数据库极其复杂&#xff0c;还极大概率遇到各种问题&#xff0c;今天教大家只要解压就可安装完数据库&#xff0c;操作及其简单绿色。 版本包括了mysql8或mysql5&#xff0c;各位各取所需即可。 不管你之前是否安装过数据库&#xff0c;只要端口330…

Java代码审计篇 | ofcms系统审计思路讲解 - 篇3 | 文件上传漏洞审计

文章目录 0. 前言1. 文件上传代码审计【有1处】1.1 可疑点1【无漏洞】1.1.1 直接搜索upload关键字1.1.2 选择第一个&#xff0c;点进去分析一下1.1.3 分析this.getFile()方法1.1.4 分析new MultipartRequest(request, uploadPath)1.1.5 分析isSafeFile()方法1.1.6 分析request.…

一款rust语言AI神器cursor在ubuntu环境下的安装启动教程

虽然cursor目前只支持英文但是它强大的代码联想能力以及问答能力&#xff0c;可以高效的提高编码效率。 如下步骤所有的前提是你的ubuntu上面已经安装了rust以及其必须的extensions。 1 下载 到官网https://www.cursor.com下载指定版本的软件。 下载到本地以后会生成如下软件…

Spring Cloud之二 微服务注册

1&#xff1a;Intellij 新建服务 user-service 2&#xff1a;pom.xml <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"…

nginx配置负载均衡的几种方式

1&#xff0c;轮询&#xff08;默认&#xff09; 每个请求按时间顺序逐一分配到不同的后端服务器&#xff0c;如果后端服务器 down掉&#xff0c;能自动剔除。 # 反向代理配置upstream server_list{# 这个是tomcat的访问路径server localhost:8080;server localhost:9999;}serv…

electron有关mac构建

针对 Mac M1/2/3 芯片的设备&#xff0c;proces.archarm64. 执行下面命令&#xff0c;检查下按照的 node.js 版本是不是 intel x64 指令集&#xff0c;如果是的话安装下 arm64 指令集的 node.js终端中执行以下命令&#xff1a;node -p process.arch 对应的node版本也是arm版 …