-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()
那么问题是什么?错误还是别的? – Marcin 2014-10-29 03:30:09
Marcin,上面的代码有效。没有错误。我想添加另一篇文章,其中我比较了2个CSV文件。如果第一个CSV文件中缺少一行,请添加它。如果第2列已满,如果第2列和第3列已满,则将数据添加到第3列 – 2014-10-29 21:36:48