如何用程序拆解文本中的数值并计算
比如每个文件由空格分隔的数字构成,行数列数不定,要实现一个可反复执行的算法,每次计算指定文件里所有数字的平均值。
如果只做一次,导入到Excel再算就行了。但如果要反复做很多次,就需要编程序了。各种程序设计语言都能完成这类事情,但不同的语言完成起来麻烦度相差很大。比如用JAVA实现上面的算法,写起来大概是这样:
import java.io.BufferedReader; import java.io.IOException; import java.io.FileReader; import javax.swing.JFileChooser; import javax.swing.JOptionPane; import java.util.ArrayList;
public class Week04 { public static void main(String[] args) throws IOException { String theFile; theFile = getTheFileName(); double theAverage; theAverage = getTheAverage(theFile); displayTheResult(theAverage,"The average is;"); }
public static String getTheFileName() { String theFile; JFileChooser jfc = new JFileChooser(); jfc.showOpenDialog(null); return theFile = jfc.getSelectedFile().getAbsolutePath(); }
public static double getTheAverage(String s) throws IOException { double value = 0, numValues = 0; FileReader fr = new FileReader(s); BufferedReader br = new BufferedReader(fr); String aLine; while ((aLine = br.readLine()) != null) { String nums[] = aLine.split(" "); For (int i=0;i value += Double.parseDouble(nums[i]); numValues++; } } if (numValues > 1) { return value/numValues; } else { return value; }
} public static void displayTheResult(double x, String s){ JOptionPane.showMessageDialog(null,s + x); } }
|
这就相当费劲了,用C、BASIC等类似语言也一样麻烦。Python会简单一些,但也没有本质差别。而且这些语言环境安装部署都很复杂。
如果用esProc就会简单很多,像这样的问题只要几行代码:
A |
B |
|
1 |
=file(pFile).import@i() |
/读入文件,pFile为参数,如d:\fo.txt |
2 |
=A1.(~.array(" ")) |
/每行按空格拆分为数字 |
3 |
=A2.conj() |
/合并所有数字 |
4 |
=A3.avg(float(~)) |
/转为浮点并求平均 |
esProc 是个脚本语言,可以在 IDE 里反复执行,还可以用命令行方式调用。
类似其它的文件计算例子:比较 csv 文件中数据差异
处理 Excel 也不是问题:excel 合并汇总
这里有总结的更多文本计算例子,涵盖了常见的结构化数据的运算:SPL 结构化文本计算
esProc 是专业的文件处理脚本,即安即用,调试方便,类库丰富,详情参考:文件处理器
关于集算器安装使用、获得免费授权和相关技术资料,可以参见:如何使用集算器