2016-04-21 4 views
1

Как сравнить строку с предыдущей строкой в ​​файле CSV?Как сравнить строку с предыдущей строкой в ​​CSV?

Мне это нужно для моего, если условие:

if row[0] != row[0][of previous row]: 
    do something.... 
+1

Добро пожаловать в SO, пожалуйста, покажите нам код, который вы пробовали, включая ту часть, где вы читаете строки в файле. Если вы еще этого не сделали, я предлагаю вам прочитать https://docs.python.org/2/library/csv.html –

+0

В вашем цикле создайте 'previous = row' в конце цикла. –

+0

Что должно произойти для первой строки файла, у которой нет предыдущей строки? – martineau

ответ

0

панды является отличным инструментом для работы с CSV-х годов. В этом случае, если вы сравниваете целые числа, вы можете использовать diff(). Когда строки равны, diff() будет равен 0. Это может быть применено ко всей кадре данных, как в df.diff(), или к определенной серии (колонке) как df.column_name.diff() или df['column_name'].diff(). Вы даже можете взять разницу между столбцами или изменить период, чтобы рассчитать разницу, проверьте документацию here.

+0

Спасибо за информацию, я должен ее проверить :) – MTG

1

Эта программа делать то, что вы хотите:

import csv 

f = open("some.csv", "r+") 
ff = csv.reader(f) 

pre_line = ff.next() 
while(True): 
    try: 
     cur_line = ff.next() 
     if pre_line == cur_line: 
      pass #replace pass with do_something() 
     pre_line = cur_line 
    except: 
     break 

Как вы видите выше, я накинут строк в файле CSV, и проверили каждую строку с предыдущим использованием и итератора. Если они равны, я вызвал метод do_something(), и если они были не равны, он просто перешел к следующей строке.

+0

what do ff.next()? спасибо за наконечник, который я нахожу в своем уме, как я могу перестроить свой скрипт :) – MTG

+0

@MTG 'ff' действует как список строк в csv. 'ff.next()' возвращает строку каждый раз, когда вы вызываете ее, пока вы не получите последнюю строку. В python мы вызываем ff итерирующей переменной, а next() - итератором. Google «итератор - это python». – EbraHim

+0

нет работа .... это возможно, что это не работает на 3,5? – MTG

Смежные вопросы