2016-02-01 47 views
0

我需要从基于在所述线的值的大的文件中提取的特定行。在下面的示例文件中,我想提取第9个字段等于136的所有行(本例中的第3行)。提取线值

1 1 2 0.000000000000000E+00 0.101998342169440E+04 1 1 192 134 0 
2 1 2 0.000000000000000E+00 0.925223568652902E+03 1 1 192 135 0 
3 1 2 0.000000000000000E+00 0.826768068146788E+03 1 1 192 136 0 
4 1 2 0.000000000000000E+00 0.743749759381265E+03 1 1 192 137 0 
5 1 2 0.000000000000000E+00 0.674552206394659E+03 1 1 192 138 0 

我尝试下面的代码,但没有成功:

outfile = open('example_out.txt', 'w') 

with open('example_in.txt', 'r') as infile1: 
    for line in infile1: 
     fields = line.split() 
     if fields[8] == 136: 
      outfile.write(line) 
+0

“没有成功”发生了什么事?没有输出?错误的输出?例外?你的电脑爆炸了吗? –

+1

'领域[8]'是一个字符串并且在python' “136”!= 136'。 – Arpegius

回答

2

split返回一个字符串列表。改为尝试if fields[8] == "136":

+1

或者,如果'INT(字段[8])== 136:' –

+0

这问题是,它会引发异常,如果字段[8]比的数以外的内容。 – zondo

+0

但如果它是以外的任何其他的数字,比大概会_be_异常,并且最好不要忽视,因为与字符串比较。 –