2016-04-11 138 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