2013-06-05 37 views
5

Rasgele sayı satırı olan bir günlük dosyasına sahibim. Tek ihtiyacım olan şey, bir "Toplam" dizesiyle başlayan günlük dosyasındaki bir veri satırıdır. Dosyadan başka bir satır istemiyorum.günlük dosyası ayrıştırma python

Bunun için basit bir python programını nasıl yazarım?

Bu benim girdi dosyası ben

TestName  id  TPS   GRE 
Totals  64  129.61  145.64 

Tamam .. Yani istediğim gibi görünen bir çıkış dosyasını almak için çalışıyorum

TestName  id   eno   TPS  GRE   FNP 
Test 1205 1   0   78.00  0.00   0.02 
Test 1206 1   0   45.00  0.00   0.02 
Test 1207 1   0   73400  0.00   0.02 
Test 1208 1   0   34.00  0.00   0.02 

Totals  64   0   129.61  145.64  1.12 

böyle görünüyor sadece 1., 2., 4. ve Giriş dosyasından 5. sütun ama diğerleri değil. Bunu başarmak için [index] listesini deniyorum, ancak IndexError'ı alıyorum: (liste endeksi aralık dışı). Ayrıca 2 sütun arasındaki boşluk aynı değildir, bu yüzden sütunları nasıl böleceğimi ve istediklerimi nasıl seçeceğimi bilmiyorum. Birisi bana bu konuda yardımcı olabilir. Aşağıda ben çabuk ol ... grep olmaz

newFile = open('sana.log','r') 

for line in newFile.readlines(): 

    if ('TestName' in line) or ('Totals' in line): 

     data = line.split('\t') 

     print data[0]+data[1] 
+2

Python bu görev için overkill gibi görünüyor programı kullanılır? –

cevap

3
theFile = open('thefile.txt','r') 
FILE = theFile.readlines() 
theFile.close() 
printList = [] 
for line in FILE: 
    if ('TestName' in line) or ('Totals' in line): 
     # here you may want to do some splitting/concatenation/formatting to your string 
     printList.append(line) 

for item in printList: 
    print item # or write it to another file... or whatever 
1
for line in open('filename.txt', 'r'): 
    if line.startswith('TestName') or line.startswith('Totals'): 
     fields = line.rsplit(None, 5) 
     print '\t'.join(fields[:2] + fields[3:4])