ループに関するヘルプ、またはこれを行うためのより良い方法が必要です。答えは明白かもしれませんが、私はここに来たばかりで、今精神的なブロックを感じています: 私はこのようなログファイルを持っていて、同じ ID を持つすべての行を一致させようとしています: 後で値を比較できるように一致した ID。最初の行を一致させることはできますが、ループが終了したようです。私が間違っていること、またはより良いアプローチがあるかどうかはわかりません。どんな助けでも大歓迎です!
いくつかのメモ:
- 行を分割すると、XYZ ID 列は行 [2] でインデックス付けされます。ここで、len(行) == 11 です。
- ファイルをループして、各行について、ファイルの残りの行をスキャンして「一致」を見つける内部ループを作成しようとしています。
- 一致が見つかった場合は、値を比較できるようにこれを返したい
- 問題は、最初の一致が見つかった後にコードが壊れているように見えるため、最初に見つかった一致のみが返されることです
以下は、私のコードと、私が使用しているログ ファイルのサンプルです (一部のビジネス データを非公開にするために編集された文字列が含まれています)。実際のログファイルには、このフォーラムに貼り付ける前に削除されたカンマが含まれています。
f = open('t.log','r')
for line in f:
aline = line.replace(',','').split()
if len(aline)==11:
for line in f:
bline = line.replace(',','').split()
if len(bline)==11 and aline[2]==bline[2]:
print 'a: ', aline
print 'b: ', bline
#t.log
[13:40:19.xxx009] status -------
[13:40:19.xxx013] status XYZ -4 -5675.36 quote 449.70/- 449.78 avg 1418.84 -7474.48 0.134 -55.630 -395.148
[13:40:19.xxx021] status XYZ ID:22P00935xxx -4 3.92 quote: 0.98/ 1.02 avg: -0.98 -0.16
[13:40:19.xxx024] status XYZ ID:22C0099xxx0 -2 26.4 quote: 11.60/ 11.85 avg: -13.20 2.70
[13:40:19.xxx027] status XYZ ID:22P0099xxx0 10 -17.18 quote: 1.86/ 1.90 avg: -1.72 1.42
[13:40:19.xxx029] status XYZ ID:22C00995xxx 4 -42.5 quote: 8.20/ 8.30 avg: -10.62 -9.70
[13:40:19.xxx031] status XYZ ID:22P00995xxx 2 9.66 quote: 3.30/ 3.40 avg: 4.83 16.26
[13:40:19.xxx535] status total xx5.52
[13:41:20.xxx688] status -------
[13:41:20.xxx691] status XYZ -4 -5675.36 quote 449.83/- 449.99 avg 1418.84 -7475.32 -0.374 -213.006 -39.391
[13:41:20.xxx701] status XYZ ID:22P00935xxx -4 3.92 quote: 0.96/ 1.00 avg: -0.98 -0.08
[13:41:20.xxx704] status XYZ ID:22C0099xxx0 -2 26.4 quote: 11.65/ 11.90 avg: -13.20 2.60
[13:41:20.xxx708] status XYZ ID:22P0099xxx0 10 -17.18 quote: 1.83/ 1.87 avg: -1.72 1.12
[13:41:20.xxx712] status XYZ ID:22C00995xxx 4 -42.5 quote: 8.20/ 8.30 avg: -10.62 -9.70
[13:41:20.xxx716] status XYZ ID:22P00995xxx 2 9.66 quote: 3.30/ 3.35 avg: 4.83 16.26
[13:41:20.xxx718] status XYZ ID:22C0095xxx0 -10 35.6 quote: 5.40/ 5.50 avg: -3.56 -19.40
[13:41:20.001362] status total xx6.68
Result:
$ python pnlcomp.py
a: ['[13:40:19.000021]', 'statusAAPL', '130322P00435000', '-4', '3.92', 'quote:', '0.98/', '1.02', 'avg:', '-0.98', '-0.16']
b: ['[13:41:20.000701]', 'statusAAPL', '130322P00435000', '-4', '3.92', 'quote:', '0.96/', '1.00', 'avg:', '-0.98', '-0.08']