2016-02-01 44 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_異常,並且最好不要忽視,因爲與字符串比較。 –