Мне нужна помощь с циклом или лучший способ сделать это. Ответ может быть очевиден, но я новичок здесь и чувствую ментальный блок прямо сейчас: у меня есть файл журнала, который выглядит так, и я пытаюсь сопоставить все строки с тем же 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']
вы не можете использовать 'для линии в f' дважды в одном цикле –
** ааа, спасибо ** – teachamantofish
либо это не ваш фактический код, или это не фактическая Пример данных. Строки в 't.log' имеют 12 столбцов, а не 11, и ни один из них не имеет значений, близких к вашему выводу ... – abarnert