【问题标题】:Python - Print duplicate dataset in a CSV File (csv.reader)Python - 在 CSV 文件 (csv.reader) 中打印重复数据集
【发布时间】:2019-08-06 09:03:34
【问题描述】:

我正在尝试打印出 CSV 文件中多次存在的所有数据集。不是单个值,而是多个值在一起。

例如:

//dataset1: 25,41,1,23,12,//dataset2: 11, 2
//dataset1: 25,41,1,22,13,//dataset2: 11, 2
//dataset1: 25,41,1,23,14,//dataset2: 11, 3
//dataset1: 25,41,1,23,15,//dataset2: 11, 4
//dataset1: 25,41,1,23,15,//dataset2: 11, 5

我尝试过这样做:

    with open(str(csv_file)) as file:
        reader = csv.reader(file)
        for row in reader:
            rowset1 = [row[0], row[1], row[2], row[3], row[4]]
            rowset2 = [row[5], row[6]] 
            //this is where I am stuck 
            if rowset1 //exists more than once > 1 or rowset2 //exists more than once > 1:
                print("True")
            else:
                print("False")

编辑:

输出应该是:

True
True
False
True
True

我也尝试过类似的方法,但我认为这是错误的方法:

len(my_list) != len(set(my_list))

【问题讨论】:

  • 您能否扩展问题并在您的示例中显示所需的输出?

标签: python python-3.x csv reader


【解决方案1】:

如果我理解正确:

文件

25,41,1,23,12,11,2
25,41,1,22,13,11,2
25,41,1,23,14,11,3
25,41,1,23,15,11,4
25,41,1,23,15,11,5

代码

#!/usr/bin/python3
# -*- coding: utf-8 -*-

import contextlib
import csv

if __name__ == '__main__':

    res1 = list()
    res2 = list()

    with contextlib.closing(open('file.csv', 'r')) as csv_file:
        reader_orig = csv.reader(csv_file, delimiter=',')
        for row in reader_orig:
            row_set1 = [row[0], row[1], row[2], row[3], row[4]]
            row_set2 = [row[5], row[6]]

            if row_set1 not in res1:
                res1.append(row_set1)
            else:
                print(row_set1)

            if row_set2 not in res2:
                res2.append(row_set2)
            else:
                print(row_set2)

输出

['11', '2']
['25', '41', '1', '23', '15']

【讨论】:

  • 非常感谢。正是我需要的。
【解决方案2】:

您的问题不清楚,CSV 中的“数据集”是什么?从你的 CSV 中给出一个实际的摘录,没有我认为你添加的“//”cmets。

【讨论】:

  • 请在 cmets 中添加这些作为答案。
  • 就像我添加的那样,一行中的前 5 个值加在一起是 dataset1,另外 2 个加在一起是 dataset2。它们应该是独一无二的,例如'25,41,1,23,15' 在 CSV 文件中应该只存在一次,但它存在不止一次。我想检查一下,然后继续。
  • 我显然还不能添加 cmets,没有足够的“声誉”。
猜你喜欢
  • 2017-12-01
  • 2017-03-14
  • 1970-01-01
  • 1970-01-01
  • 2023-03-15
  • 1970-01-01
  • 2019-03-01
  • 2017-04-18
  • 2021-05-30
相关资源
最近更新 更多