2014-04-01 67 views
1

我在Python編碼beginer,解析CSV文件和比較一行一行

我嘗試打開一個CSV文件和比較一行行,

現在我比較1號線和2號線,然後線3和線4,

我想比較線1和線2,則第2行和第3行,然後第3行和第4行,

我的代碼:

with open('file.csv', newline='') as f: 
      reader0 = csv.reader(f) 
      rownum = 0 
      for row in reader0: 
       try: 
        miaw = next(reader0) 
        OTIME = row[27] 
        NOTIME = miaw[27] 
        if rownum == 0: 
         header = row 
         rownum += 1 
        else: 
         print(row[0],row[1],OTIME,miaw[0],miaw[1],NOTIME) 
        except: 
        print ("exception") 

這給我的結果:

1 ID1 05-APR-12 00.00.05.800000 2 ID2 05-APR-12 00.00.05.801000 
3 ID3 05-APR-12 00.00.06.074000 4 ID4 05-APR-12 00.00.13.003000 

我的目的是比較時間戳,

感謝您的幫助

回答

0

既然你叫next(reader0),第二行僅在第一次讀一次線與它進行比較。

使用for循環之外的上一行的緩衝區。

last_line = None 
for row in reader0: 
    if last_line is None: 
     last_line = row 
     continue 

    # now compare row to last_line 

    last_line = row 
0

你可以得到你所有的行時間戳和做任何你與他們(你沒有指定什麼樣的比較做),這樣就可以用類似這樣的例子正則表達式來完成,如:

data = "1 ID1 05-APR-12 00.00.05.800000 2 ID2 05-APR-12 00.00.05.801000 3 ID3 05-APR-12 00.00.06.074000 4 ID4 05-APR-12 00.00.13.003000" 

import re 
timestamps = re.findall(r'\d{2}\.\d{2}\.\d{2}\.\d{6}', data) 
print timestamps 

,結果會在這種情況下:

['00.00.05.800000', '00.00.05.801000', '00.00.06.074000', '00.00.13.003000'] 

希望這會有所幫助。