2015-09-25 28 views
-4

我不是Python程序員。但是我需要爲一個軟件創建一個輸入文件。我有一個a.txt文件和b.txt,a.txt中的每一行都對應於b.txt中的「索引」。 A.TXT:讀取不同的文本文件並提取相同的索引行

 0   0   0 L M L  41 ACC sh  1.008732 
     1   0   0 L * L  53 NCR sh  1.022706  
     2   1   1 L M L  18 ACC sh  1.025172  
     3   2   2 L M L  17 ACC sh  1.017734  
     4   2   2 L * L  21 NCR sh  1.025410 

b.txt:

#indexes:   0   0   0 
     1  -0.375E+04   0.382E+01   
     2  -0.375E+04   0.432E+01   
     3  -0.376E+04   0.353E+01   
#indexes:   1   0   0 
     1  -0.635E+04   0.331E+01 
     2  -0.235E+04   0.238E+01 
#indexes:   2   1   1 
     1  -0.735E+04   0.093E+01 
#indexes:   3   2   2 
     1  -0.835E+04   0.331E+01 
     2  -0.035E+04   0.438E+01 
#indexes:   4   2   2 
     1  -0.475E+04   0.331E+01 
     2  -0.365E+04   0.438E+01 

我需要在a.txt中的第8列提取與 「ACC」 行,並將它們存儲在一個新a_new.txt。

a_new.txt:

0   0   0 L M L  41 ACC sh  1.008732 
    2   1   1 L M L  18 ACC sh  1.025172  
    3   2   2 L M L  17 ACC sh  1.017734 

然後閱讀b.txt文件,找到「索引」行,看看是否在該行的數字是一樣的ACC線(前3個coulmns),那麼商店在b_new.txt指數箱:

b_new.txt:

#indexes:   0   0   0 
    1  -0.375E+04   0.382E+01   
    2  -0.375E+04   0.432E+01   
    3  -0.376E+04   0.353E+01   
#indexes:   2   1   1 
    1  -0.735E+04   0.093E+01 
#indexes:   3   2   2 
    1  -0.835E+04   0.331E+01 
    2  -0.035E+04   0.438E+01 

我將不勝感激,如果任何機構可以幫助我嗎?

+7

我投票關閉這個問題作爲題外話,因爲這不是代碼寫作或教程服務 – jonrsharpe

+2

你的代碼在哪裏?你有什麼嘗試? –

回答

0

花了一兩分鐘,要做到這一點:

import re 
f = open('a.txt','r') 
a = f.read() 
f.close() 
a_new = open('a_new.txt','w') 
a_new.write('\n'.join(re.findall('(^.*ACC.*$)',a,re.M))) 
a_new.close() 
f = open('b.txt','r') 
b = f.read() 
f.close() 
with open('b_new.txt','w') as b_new,open('a_new.txt','r') as a_new: 
    inds = [x.replace(' ','') for x in re.findall('^\s*(\d\s*\d\s*\d)',a_new.read(),re.M)] 
    for ind in inds: 
     reg = '(#indexes:\s*{0}\s*{1}\s*{2}[\s\S]*?(?=#indexes|$))'.format(*list(ind)) 
     matches = re.findall(reg,b) 
     b_new.write('\n'.join(matches)) 

運行它之後,a_new.txt將是這樣的:

0   0   0 L M L  41 ACC sh  1.008732 
    2   1   1 L M L  18 ACC sh  1.025172 
    3   2   2 L M L  17 ACC sh  1.017734 

b_new.txt

#indexes:   0   0   0 
     1  -0.375E+04   0.382E+01 
     2  -0.375E+04   0.432E+01 
     3  -0.376E+04   0.353E+01 
#indexes:   2   1   1 
     1  -0.735E+04   0.093E+01 
#indexes:   3   2   2 
     1  -0.835E+04   0.331E+01 
     2  -0.035E+04   0.438E+01 
+0

你的工作時間是否免費?我有一些工作躺在... – RickyA

+0

@RickyA,我是一名學生,我通過編碼SO,幾分鐘的問題來學習(我不認爲寫5行代碼是浪費時間)如果你的工作興趣和幫助我學習一些東西,那麼這很重要,是的,我會很樂意幫助你:) –

相關問題