То, что у вас есть, не совсем то, что вы хотите. Вызов
colAVal -= 1
не дает вам предыдущую строку в итераторе. В языках с более стандартным l oop вместо этого вы можете получить доступ к нужным данным, возвращаясь назад по текущей строке итератора, пока не найдете то, что вам нужно, но в python это не рекомендуемый подход. Python для l oop больше для каждого l oop, и поэтому после перехода от одной строки к следующей предыдущая становится недоступной без сохранения или прямого доступа к ней по количеству строк на объекте входных данных. Совмещать эти виды доступа крайне не рекомендуется, это может быстро запутать.
У вас также есть два вопроса в вашем вопросе выше, и я постараюсь ответить на оба.
Учитывая набор данных, который выглядит следующим образом:
col1,col2,col3,col4,col5,col6,col7,col8,col9,col10,col11,col12
0,0,0,0,0,0,0,0,0,0,abc,0
1,1,1,1,1,1,1,1,1,1,1,1
2,2,2,2,2,2,2,2,2,2,2,2
3,3,3,3,3,3,3,3,3,3,3,3
4,4,4,4,4,4,4,4,4,4,4,4
,5,5,5,5,5,5,5,5,5,abc,5
,6,6,6,6,6,6,6,6,6,abc,6
7,7,7,7,7,7,7,7,7,7,7,7
вы ожидаете, что ответы будут 0, 4 и 4, если я правильно понимаю ваш вопрос. Вы можете выполнить sh это и сохранить данные для последующего использования примерно так:
#! /usr/bin/env python
import csv
results = []
with open('example.csv') as file_handler:
for row in csv.reader(file_handler):
if row[0] != '' and row[0] != 0:
lastValidFirstColumn = row[0]
if row[10] == 'abc':
results.append(lastValidFirstColumn)
print(results)
# prints ['0', '4', '4']
данные, которые вы хотите, если я правильно понял, теперь хранятся в переменной результатов. Записать это в файл или проделать с ним другие манипуляции не так уж сложно, и я бы рекомендовал поискать их самостоятельно, это было бы лучше для обучения.