5

任意の行数のログ ファイルがあります。抽出する必要があるのは、ログ ファイルから「Total」という文字列で始まる 1 行のデータだけです。ファイルの他の行は必要ありません。

このための簡単な python プログラムを作成するにはどうすればよいですか?

これが私の入力ファイルの外観です

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

次のような出力ファイルを取得しようとしています

TestName     id      TPS         GRE
Totals       64      129.61      145.64

わかりました..だから、入力ファイルの1列目、2列目、4列目、5列目だけが必要で、他は必要ありませんでした。これを達成するために list[index] を試みていますが、IndexError: (list index out of range ) が発生します。また、2 つの列の間のスペースが同じではないため、列を分割して必要な列を選択する方法がわかりません。誰かがこれで私を助けてくれませんか。以下は私が使用したプログラムです

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]
4

2 に答える 2

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
于 2013-06-05T17:28:15.467 に答える
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])
于 2013-06-05T17:27:46.440 に答える