这是我的第二个问题。我有三个非常大的csv文件,列数相似但每个文件中的行数不同。这三个文件中的一些行是相似的。我必须从这三个文件中获取这些类似的行,并将它们放入一个新的csv文件中。 csv文件的示例如下:
ID Date Text
234212 'Thu Jun 23 04:16:27 +0000 2013' Any Text
234213 'Thu Jun 23 04:16:28 +0000 2013' Any Text
234214 'Thu Jun 23 04:16:29 +0000 2013' Any Text
.......and so on
所有三个文件中唯一的ID具有相似的文本,因此我们可以基于ID列或使用行来过滤数据,因为它们具有相同ID的类似数据。在所有三个文件中查找类似行的代码如下:
import csv
csvInputFile1=open('inputFile1.csv', 'r', encoding="utf-8", newline='')
csvInputFile2=open('inputFile2.csv', 'r', encoding="utf-8", newline='')
csvInputFile3=open('inputFile3.csv', 'r', encoding="utf-8", newline='')
csvOutputFile=open('outputSimilarData.csv', 'w', encoding="utf-8", newline='')
csvReader1 = csv.reader(csvInputFile1)
csvReader2 = csv.reader(csvInputFile2)
csvReader3 = csv.reader(csvInputFile3)
#next(csvReader3)
csvWriter = csv.writer(csvOutputFile)
for row1 in csvReader1:
row2 = next(csvReader2)
row3 = next(csvReader3)
#print(row2)
#print(row3[0])
if row1 != row2 and row1 != row3:
#if row1 not in row and row1 not in row3:
print(row1)
csvWriter.writerow(row1)
#continue
csvOutputFile.close()
csvInputFile3.close()
csvInputFile2.close()
csvInputFile1.close()
我使用文件1作为第一个输入文件,因为它具有最低的编号。行和类似地,文件2具有更高的no。行数比文件1和文件号3是最大的行。所以我在迭代文件1并将ID与其他两个文件进行比较,如果ID在那里,它应该打印并将其写入新的csv文件。
我们可以看到我正在使用"不等于"或者"不在"在代码中,它工作得很好并打印文件1中不在文件2和文件3中的所有行(文件1中的Uniqe ID)。
问题是当我把" =="或" in"为了找到类似的ID,代码不起作用,它不会打印任何内容,新的csv文件中也没有任何内容。
我无法解决问题,如果有人可以帮助我,我真的很感激;感谢...
答案 0 :(得分:0)