我需要一些关于循环的帮助,或者更好的方法来解决这个问题。答案可能很明显,但我是新来的,现在感到精神障碍:我有一个看起来像这样的日志文件,我正在尝试匹配具有相同 ID 的所有行:所以我以后可以比较匹配的 ID。我能够匹配第一行,但随后我的循环似乎终止了。我不确定我做错了什么,或者是否有更好的方法。任何帮助深表感谢!
一些注意事项:
- 当我拆分行时,XYZ ID 列在行 [2] 处被索引,其中 len(line) == 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']