【问题标题】:problems in comparing similarity in three csv files using python使用python比较三个csv文件中的相似性的问题
【发布时间】:2023-03-05 06:14:02
【问题描述】:

这是我的第二个问题。我有三个非常大的 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 的编号更高。行数比文件 1 和文件 3 最大。所以我正在遍历文件 1 并将 ID 与其他两个文件进行比较,如果 ID 存在,它应该打印它并将其写入一个新的 csv 文件。
正如我们所看到的,我在代码中使用了“不等于”或“不在”,它工作得非常好,并打印文件 1 中不在文件 2 和文件 3 中的所有行(文件 1 中的唯一 ID) .

问题是,当我输入“==”或“in”来查找相似的 ID 时,代码不起作用,它不打印任何内容,而且新的 csv 文件中也没有任何内容。

我无法解决它,如果有人可以帮助我,我真的很感激;谢谢...

【问题讨论】:

  • 已解决:仅使用括号 if (row1 == row2) 和 (row1 == row3): 并且它现在可以工作了:) 现在的问题是这段代码对于现在非常大的行是否有效(比如说 100 万)),对于非常大的数据集是否有任何有效的解决方案?

标签: python python-3.x csv twitter data-analysis


【解决方案1】:

我为此推荐difflib,它随 Python 一起提供。

周围有很多例子,例如

https://www.smallsurething.com/comparing-files-in-python-using-difflib/

python difflib comparing files

【讨论】:

    猜你喜欢
    • 2013-06-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-10
    • 1970-01-01
    • 2012-11-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多