關於如何從多個文本文件中抓取數據並處理它們的任何建議(例如計算總計)。 我一直在嘗試在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用更多的細節和我試圖做的方法更新了問題。 –