2014-10-29 109 views
-1

我有两个CSV文件。 data.csv和data2.csv。按行和列读取并比较2个CSV文件

我想首先将两个数据文件剥离成我感兴趣的数据。我已经用data.csv计算了这部分内容。然后,我想按行进行比较,以确保是否缺少一行来添加它。

接下来,我想看看第2列。如果有一个价值有那么我想写信给第3列,如果在第3列数据,然后写入4等

我现在的程序看起来像母猪。需要一些指导

哦,我使用Python V3.4

__author__ = 'krisarmstrong' 

#!/usr/bin/python 

import csv 

searched = ['aircheck', 'linkrunner at', 'onetouch at'] 


def find_group(row): 
    """Return the group index of a row 
     0 if the row contains searched[0] 
     1 if the row contains searched[1] 
     etc 
     -1 if not found 
    """ 
    for col in row: 
     col = col.lower() 
     for j, s in enumerate(searched): 
      if s in col: 
       return j 
     return -1 


inFile = open('data.csv') 
reader = csv.reader(inFile) 
inFile2 = open('data2.csv') 
reader2 = csv.reader(inFile2) 
outFile = open('data3.csv', "w") 
writer = csv.writer(outFile, delimiter=',', quotechar='"', quoting=csv.QUOTE_ALL) 

header = next(reader) 
header2 = next(reader2) 


"""Built a list of items to sort. If row 12 contains 'LinkRunner AT' (group 1), 
    one stores a triple (1, 12, row) 
    When the triples are sorted later, all rows in group 0 will come first, then 
    all rows in group 1, etc. 
""" 

stored = [] 
writer.writerow([header[0], header[3]]) 

for i, row in enumerate(reader): 
    g = find_group(row) 
    if g >= 0: 
     stored.append((g, i, row)) 
stored.sort() 

for g, i, row in stored: 
    writer.writerow([row[0], row[3]]) 

inFile.close() 
outFile.close() 
+1

那么问题是什么?错误还是别的? – Marcin 2014-10-29 03:30:09

+0

Marcin,上面的代码有效。没有错误。我想添加另一篇文章,其中我比较了2个CSV文件。如果第一个CSV文件中缺少一行,请添加它。如果第2列已满,如果第2列和第3列已满,则将数据添加到第3列 – 2014-10-29 21:36:48

回答

0

也许尝试:

import csv 
with open('some.csv', 'rb') as f: 
    reader = csv.reader(f) 
    for row in reader: 
     col1.append(row[0]) 
     col2.append(row[1]) 

for i in xrange(len(col1)) 
    if col1[i] == '': 
     #thing to do if there is nothing for col1 
    if col2[i] == '': 
     #thing to do if there is nothing for col2 

这是在“确保,如果行缺少添加它开始”。

+0

如果我正确理解这一点,那么应该添加另一个函数来比较some.csv与其他数据文件是否正确? – 2014-10-29 21:37:46