Python - печать дублированного набора данных в файле CSV (csv.reader) - PullRequest
0 голосов
/ 15 марта 2019

Я пытаюсь распечатать все наборы данных в файле 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")

EDIT:

Вывод должен быть:

True
True
False
True
True

Я тоже пробовал что-то подобное, но я думаю, что это неправильный подход:

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

Ответы [ 2 ]

1 голос
/ 15 марта 2019

Если я правильно понял:

Файл

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']
0 голосов
/ 15 марта 2019

Ваш вопрос неясен, что такое "набор данных" в CSV?Дайте фактическую выдержку из вашего CSV без комментариев "//", которые, я полагаю, вы добавили.

...