Csv 使用python 3比较2个文件
我试图使用python比较两个分隔文件,通常是csv/pipe文件。我不是逐行比较,而是寻找单元到单元的比较(元素到元素)。 我的结果应该是Csv 使用python 3比较2个文件,csv,python-3.x,tabs,Csv,Python 3.x,Tabs,我试图使用python比较两个分隔文件,通常是csv/pipe文件。我不是逐行比较,而是寻找单元到单元的比较(元素到元素)。 我的结果应该是 应创建不匹配的文件 在控制台中,它应该显示列名、行号、源行元素值和目标行元素值。 有谁能帮我一下吗 示例代码: import sys, csv ,operator data = csv.reader(open('D:\ANACONDA\sam.csv'),delimiter=',') sortedlist = sorted(data, key=operat
import sys, csv ,operator
data = csv.reader(open('D:\ANACONDA\sam.csv'),delimiter=',')
sortedlist = sorted(data, key=operator.itemgetter(0)) # 0 specifies according to first column we want to sort
print (sortedlist);
now write the sorte result into new CSV file
with open("NewFile.csv", "wb") as f:
fileWriter = csv.writer(f, delimiter=',')
for row in sortedlist:
fileWriter.writerow(row)
源文件1:
NAME,AGE,CITY
a,34,abc
目标文件1:
NAME,AGE,CITY
a,34,xys
输出应如下所示:
列CITY不匹配,第25行,源值为:abc,目标值为:xys您可以执行以下操作:
rowElementCompare(sourceRow, targetRow)
{
row_length = min(len(sourceRow), len(targetRow))
for i in range(row_length):
if sourceRow[i] != targetRow[i]:
return i
return None
}
import csv, itertools
column_names = ['name','age','city']
source_data = csv.reader(open('source.csv', delimiter=',')
target_data = csv.reader(open('target.csv', delimiter=',')
counter = 1
for source_row,target_row in itertools.izip(source_data,target_data):
comparison_result = None
comparison_result = rowElementCompare(source_row, target_row)
if comparison_result != None: #comparison_result is the column index at which the mismatch occured
print "Mismatch in column %s on row number %d , source value %s, target value %s" % (column_names[comparison_result], counter, source_row[comparison_result], target_row[comparison_result])
counter += 1
假设源文件和目标文件都具有相同顺序的列,或者您所做的任何排序都会生成仍保留列顺序的输出
此外,比较假定元素值是字符串,而不是任何其他数据类型(否则,您应该自己进行数据类型转换)