2016-04-11 198 views
-1

我有一個文本文件,我想在這個文件我把它放在其他文件中只提取一定行提取文本文件中特定行

for line in cFicIn: 

fieldwidths = (22, 22, 22) # negative widths represent ignored padding fields 
parse = make_parser(fieldwidths) 
fields = parse(line) 

我有三列文文件。場[0]給出了列0 ....

Frequency [Hz]   Peak amplitude   Phase [degrees] 
117.131422636205   1528954.28753915   -54.0642640720085 
234.26284527241   1051596.71706853   -6.8190622364283 
351.302901744313   456787.344479019   47.6494383764102 
Peak interpolation: Numeric 

不過我,我要恢復的是文件中的兩條線之間的數據知道我有several.The線頻率和峯插

if 'Frequency' and 'Phase' in line : 


     newline=(str(a)+';'+fields[0].strip()+';'+fields[1].strip()+';'+fields[2].strip()+';'+'\n') 
     newline.replace(" ","") 
     a=a+1 
     print(newline) 



     csv_file.write(newline) 

     csv_file.close() 

回答

0

創建一個名爲should_process_line的bool變量,如果此變量爲True,則處理行。遇到「頻率」和「相位」後,將其設置爲真,在遇到「峯值插值」後將其設置爲假。 雖然我們在這,你換行代可以改寫爲

newline = str(a) + ';'.join([x.strip() for x in fields]) 

它是在問題的方式,你的換行符變量不是海峽,但實際上一個元組的唯一因素是你想要的字符串。此外,在結尾處添加「\ n」將是不必要的,如果你使用

print(newline, file=csv_file) 

打印添加「\ n」一切結束它打印反正。

+0

謝謝你。你說'在INFILE行: 如果line.strip()== 「開始」: 複製=真 ELIF line.strip()== 「結束」: 副本=假 ELIF複製: outfile.write(line) ' –

+0

不是elif,在最後一種情況下應該是if。 – Synedraacus