解析CSV文件并逐行比较

时间:2014-04-01 12:41:55

标签: python python-3.x

我是Python编码的先生,

我尝试打开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

我的目标是比较时间戳,

感谢您的帮助

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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']

希望这会有所帮助。