標籤:python讀取文本
目的:尋找文本中還有Sum/Avg的行中低三個豎線後第一個浮點數
思路:先使用python讀取文本中一行,然後分割字串,尋找含有Sum/Avg關鍵字的行,取出想要的結果
文本局部:
........
| msop0 | 8 326 | 99.4 0.3 0.3 0.3 0.9 25.0 | -0.383 |
|--------+-------------+-----------------------------------------+-------------|
| mspe0 | 8 394 |100.0 0.0 0.0 0.0 0.0 0.0 |-2147483.648 |
|--------+-------------+-----------------------------------------+-------------|
| muor0 | 8 458 |100.0 0.0 0.0 0.0 0.0 0.0 |-2147483.648 |
|--------+-------------+-----------------------------------------+-------------|
| mvxz0 | 8 435 | 99.8 0.0 0.2 0.2 0.5 25.0 | 0.419 |
|--------+-------------+-----------------------------------------+-------------|
| mwie0 | 8 376 |100.0 0.0 0.0 0.0 0.0 0.0 |-2147483.648 |
|==============================================================================|
| Sum/Avg| 224 11172 | 99.8 0.1 0.1 0.1 0.2 8.5 | -0.089 |
|==============================================================================|
| Mean | 8.0 399.0 | 99.8 0.1 0.1 0.1 0.2 8.5 |-2147483.648 |
| S.D. | 0.0 35.4 | 0.2 0.1 0.2 0.1 0.3 9.0 |-2147483.648 |
| Median | 8.0 394.0 |100.0 0.0 0.0 0.0 0.2 12.5 |-2147483.648 |
`------------------------------------------------------------------------------‘
測試程式如下:
>>> ss='| Sum/Avg| 224 11172 | 99.8 0.1 0.1 0.1 0.2 8.5 | -0.089 |'>>> ss'| Sum/Avg| 224 11172 | 99.8 0.1 0.1 0.1 0.2 8.5 | -0.089 |'>>> ss.split('|')['', ' Sum/Avg', ' 224 11172 ', ' 99.8 0.1 0.1 0.1 0.2 8.5 ', ' -0.089 ', '']>>> ss.split('|')[1] == ' Sum/Avg'True>>> ss.split('|')[3]' 99.8 0.1 0.1 0.1 0.2 8.5 '>>> ss.split('|')[3][0:5]' 99.8'>>> float(ss.split('|')[3][0:5])99.8
參考程式:
f = open("ctm_39phn.filt.sys") # 返回一個檔案對象line = f.readline() # 調用檔案的 readline()方法while line: #print line, # 後面跟 ',' 將忽略分行符號 if line.split('|')[1] == ' Sum/Avg':print float(line.split('|')[3][0:5]) # print(line, end = '') # 在 Python 3中使用 line = f.readline()f.close()
python解析文字檔樣本