将CSV文件与没有重复元素的Python结合

Xodarap777

我正在尝试编写python(2.7)脚本,以将多个CSV列表添加在一起(简单追加),但不添加文件X中与文件Y共享元素(第一栏中除外)的任何行。这是我的试用脚本:

import csv
import glob

with open('merged.csv','wb') as out:
    seen = set()
    output = []
    out_writer = csv.writer(out)
    csv_files = glob.glob('*.csv')
    for filename in csv_files:
        with open(filename, 'rb') as ifile:
            read = csv.reader(ifile)
            for row in read:
                if {row[1] not in seen} & {row[2] not in seen} & {row[3] not in seen}:
                    seen.add(row[1])
                    seen.add(row[2])
                    seen.add(row[3])
                    output.append(row)
    out_writer.writerows(output)

我敢肯定,这可以清除一些,但这是试运行-为什么它不正确地将第2、3和4列中的元素添加到所看到的集合中,如果它们出现在所考虑的行中,则不追加该行?除了正确检查重复项以外,它还可以成功输出合并的文件。(如果合并的文件已经存在于目录中,这也将起作用,否则我会遇到麻烦吗?)

提前非常感谢!:)

珍妮·卡里拉(Janne karila)

我怀疑这条线不能满足您的要求:

if {row[1] not in seen} & {row[2] not in seen} & {row[3] not in seen}:

那是一个设定的交集。演示:

>>> {False} & {True}
set([])
>>> {True} & {True}
set([True])
>>> {False} & {False}
set([False])
>>> bool(set([False]))
True    #non-empty set is True in boolean context

也许你打算

if row[1] not in seen and row[2] not in seen and row[3] not in seen:

或(几乎*)等价物

if all(value not in seen for value in row[1:4]):

(*)如果行中的值较少,则不会引发异常

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

测试没有重复元素的列表

来自分类Dev

测试没有重复元素的列表

来自分类Dev

有没有更简单的方法将列表随机分为子列表,而无需在python中重复元素?

来自分类Dev

子元素之间没有重复元素?

来自分类Dev

如何从列表中创建没有重复元素的字典

来自分类Dev

检测重复元素python

来自分类Dev

Python删除重复元素

来自分类Dev

将两个列表合并为一个没有重复元素的保留顺序

来自分类Dev

具有重复元素的列表的 Python 深度复制

来自分类Dev

如何获取没有重复元素的列表的所有组合?

来自分类Dev

Python:计算列表中的重复元素

来自分类Dev

python re向后引用重复元素

来自分类Dev

替换Python列表中的重复元素?

来自分类Dev

在Kotlin中创建没有重复元素的4位数字

来自分类Dev

没有默认构造函数的重复元素的模板化数组

来自分类Dev

Nightwatch通用步骤定义,在页面对象中没有重复元素

来自分类Dev

输出没有重复元素的动态数组(缩小数组)C++

来自分类Dev

是否可以在没有 JS 且没有重复元素的情况下构建此布局 - 只有 CSS?

来自分类Dev

具有重复元素的文本文件到JSON

来自分类Dev

Docopt:将重复元素之后的选项插入为重复元素

来自分类Dev

Docopt:将重复元素之后的选项插入为重复元素

来自分类Dev

将非重复元素添加到Java 8功能样式的现有键中

来自分类Dev

将.index()与具有重复元素的列表一起使用

来自分类Dev

将非重复元素添加到Java 8功能样式的现有键中

来自分类Dev

XSLT更具体地将序列选择用于具有不同日期的重复元素

来自分类Dev

Python附加到csv文件,没有白行,也没有重复的列

来自分类Dev

删除或更改列表中特定的重复元素(并非所有重复元素)

来自分类Dev

排序重复元素

来自分类Dev

将CSV文件合并为一个文件,没有重复的标题

Related 相关文章

  1. 1

    测试没有重复元素的列表

  2. 2

    测试没有重复元素的列表

  3. 3

    有没有更简单的方法将列表随机分为子列表,而无需在python中重复元素?

  4. 4

    子元素之间没有重复元素?

  5. 5

    如何从列表中创建没有重复元素的字典

  6. 6

    检测重复元素python

  7. 7

    Python删除重复元素

  8. 8

    将两个列表合并为一个没有重复元素的保留顺序

  9. 9

    具有重复元素的列表的 Python 深度复制

  10. 10

    如何获取没有重复元素的列表的所有组合?

  11. 11

    Python:计算列表中的重复元素

  12. 12

    python re向后引用重复元素

  13. 13

    替换Python列表中的重复元素?

  14. 14

    在Kotlin中创建没有重复元素的4位数字

  15. 15

    没有默认构造函数的重复元素的模板化数组

  16. 16

    Nightwatch通用步骤定义,在页面对象中没有重复元素

  17. 17

    输出没有重复元素的动态数组(缩小数组)C++

  18. 18

    是否可以在没有 JS 且没有重复元素的情况下构建此布局 - 只有 CSS?

  19. 19

    具有重复元素的文本文件到JSON

  20. 20

    Docopt:将重复元素之后的选项插入为重复元素

  21. 21

    Docopt:将重复元素之后的选项插入为重复元素

  22. 22

    将非重复元素添加到Java 8功能样式的现有键中

  23. 23

    将.index()与具有重复元素的列表一起使用

  24. 24

    将非重复元素添加到Java 8功能样式的现有键中

  25. 25

    XSLT更具体地将序列选择用于具有不同日期的重复元素

  26. 26

    Python附加到csv文件,没有白行,也没有重复的列

  27. 27

    删除或更改列表中特定的重复元素(并非所有重复元素)

  28. 28

    排序重复元素

  29. 29

    将CSV文件合并为一个文件,没有重复的标题

热门标签

归档