查找并替换 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

问答搜集

https://stackoverflow.com/questions/61605055/replacing-a-line-in-a-textile-leaving-remains-of-oldline