如何从字符串文本中拆解出多个数值并计算

 

对于字母符号数值混排的文本文件,可以拷入Excel再拆解,但公式过于复杂,普通人难以掌握。用VBA\JAVA\Python等开发语言也可以解决这个问题,但代码冗长繁琐,还要使用难懂的正则表达式,实现起来更加困难。

如果用esProc就会简单很多。比如文本文件的其中一行是"Jeff spent 13.5$ for cola, 5.2$ for coat,and 21$ for toys",要对该文件中的所有数值求和,esProc代码可以写成:


A

B

1

=file("data.txt").read()

/读入文本,形成一个大字符串

2

=A1.word@d()

/拆解出所有的数值,包括小数

3

=A2.sum()

/求和

如果不是对整体求和,而是按行求和,代码也很简单:


A

B

1

=file("data.txt").import@i()

/读入文本,每行一个字符串

2

=A1.new(~.words@s()(1):name,~.words@d():numbers)

/按行拆分,形成两列,name列存该行单词中的第一个(名字),numbers存数值

3

=A2.derive(numbers.sum())

/新加一列,对numbers里的数值求和

esProc 是个脚本语言,可以在 IDE 里反复执行,还可以用命令行方式调用。

类似其它的文件计算例子:比较 csv 文件中数据差异

处理 Excel 也不是问题:excel 合并汇总

这里有总结的更多文本计算例子,涵盖了常见的结构化数据的运算:SPL 结构化文本计算

esProc 是专业的文件处理脚本,即安即用,调试方便,类库丰富,详情参考:文件处理器

关于集算器安装使用、获得免费授权和相关技术资料,可以参见:如何使用集算器