关于如何从多个文本文件中抓取数据并处理它们的任何建议(例如计算总计)。 我一直在尝试在Python中做它,但不断遇到死胡同。处理来自几个文本文件的数据
每次您执行操作时,计算机都会以文本格式生成汇总文件,例如,从批处理筛选好苹果。首先你加载苹果,然后把好坏分开,然后你可以重新加载不好的苹果重新测试它们,一些被恢复。所以每个批次至少生成2个摘要文件,具体取决于您加载苹果恢复的次数。
这是文本文件的例子:
文件1:
general Info:
Batch No. : A2J3
Operation : Test
Fruit : Apple
Operation Number : A5500
Quantity In : 10
yield info:
S1 S2 Total Bin Name
5 2 7 good
1 2 3 bad
文件2:
general Info:
Batch No. : A2J3
Operation : Test
Fruit : Apple
Operation Number : A5500
Quantity In : 3
yield info:
S1 S2 Total Bin Name
1 1 2 good
0 0 1 bad
我希望得到一个文件夹中的尽是些txt文件的数据和将测试结果与以下标准合并:
- 个
处理同一批通过识别txt文件是从同一批号来,相同的操作(基于txt文件的内容不文件名)
数据合并2(或多个概要文件)转换成下面的格式CSV:
Lot: Operation: Bin First Pass Second Pass Final Yield %Yield Good 7 2 9 90% Bad 3 1 1 10%
S1,S2是可变的,它可以从1到14,但从来没有低于1 的垃圾箱也可以有不同的文本文件几种类型(不仅限于良好和坏。但总会有只有1好仓)
Bins:
Good
Semi-bad
Bad
Worst
...
我是新来的Python和我只用在学校这个脚本语言,我只知道非常基础,仅此而已。 所以这个任务,我想要做的是有点势不可挡给我,让我开始处理一个文本文件,并得到我想要的数据,例如:批号
with open('R0.txt') as fh_d10SunFile:
fh_d10SumFile_perline = fh_d10SunFile.read().splitlines()
#print fh_d10SumFile_perline
TestProgramName_str = fh_d10SumFile_perline[CONST.TestProgram_field].split(':')[1]
LotNumber_str = fh_d10SumFile_perline[CONST.LotNumber_field].split(':')[1]
QtyIn_int = int(fh_d10SumFile_perline[CONST.UnitsIn_field].split(':')[1])
TestIteration_str = fh_d10SumFile_perline[CONST.TestIteration_field].split(':')[1]
TestType_str = fh_d10SumFile_perline[CONST.TestType_field].split(':')[1]
然后抓住所有的垃圾箱在总结文件:
SoftBins_str = filter(lambda x: re.search(r'bin',x),fh_d10SumFile_perline)
for index in range(len(SoftBins_str)):
SoftBins_data_str = [l.strip() for l in SoftBins_str[index].split(' ') if l.strip()]
SoftBins_data_str.reverse()
bin2bin[SoftBins_data_str[0]] = SoftBins_data_str[2]
后来,我被卡住,因为我不知道如何做到这一点的阅读和使用的含网站(S1,S2)的n个文本文件数n个解析。 如何从n个文本文件中获取这些信息,并在内存中处理这些信息(甚至可能使用python),然后在csv输出文件中输出计算结果。
你说**至少有两个汇总文件**,但输出格式固定为两遍?我也假设'批次:'是当前的'批号'和'操作:'是'测试'? –
@MartinEvans是的,这是正确的 –
@SreejithMenon用更多的细节和我试图做的方法更新了问题。 –