查找并替换 csv 中数据
例题描述和简单分析
有 csv 文件 inventory.csv,如下所示:
cats,10,15
dogs,10,15
3个字段分别是 name、value1、value2,现在需要根据输入的参数 replacee,找到对应 name 的行,把整行替换为输入的参数 replacer。例如当输入参数 replacee 是 cats,输入参数 replacer 是 turtles,5,5 时,结果如下:
turtles,5,5
dogs,10,15
解法及简要说明
方法一:序表
在集算器中编写脚本 p1.dfx,如下所示:
A | |
1 | =file("inventory.csv").import@c() |
2 | =replacer.split@cp() |
3 | >A1.iterate(if(#1==replacee,~.record(A2))) |
4 | =file("result.csv").export@c(A1) |
简要说明:
设两个网格参数:
1、参数名:replacee,参数值:cats
2、参数名:replacer,参数值:turtles,5,5
A1 把 inventory.csv 读成序表
A2 把参数replacer按逗号分隔为序列
A3 找到第一列值等于参数 replacee 的记录,并用序列 A2 的成员依次填入当前记录的字段
A4 把结果序表 A1 导出至 result.csv
方法二:串序列
在集算器中编写脚本 p1.dfx,如下所示:
A | |
1 | =file("inventory.csv").read@n() |
2 | >A1.run(if(~.split@c()(1)==replacee,~=replacer)) |
3 | =file("result.csv").export(A1) |
简要说明:
A1 把 inventory.csv 每行作为一个成员,读成串序列
A2 遍历 A1,若当前成员(串)以逗号分隔后的第一个成员(第一列)等于参数 replacee,则将当前成员替换为 replacer
A3 把替换后的结果串序列 A1 导出至 result.csv
英文版