比较两列CSV文件

时间:2017-03-06 05:01:28

标签: python csv

我有一个包含两列的csv文件。第一列包含2676个主机名条目,第二列包含964个主机名条目。我想比较这些列并打印第2列但不在第1列中的数据 这是代码

import re
from csv import DictReader

with open("devices.csv") as f:
     a1 = [row["Device Name"] for row in DictReader(f)]
#print a1
#print len(a1)

##下面的代码给了我第2列的数据

with open('dump_data', 'r') as f:
    for line in f:
        line = re.split(': |, |\*|\n', line)

listOdd = line[1::2]
for i in listOdd:
    print i
result[]
# print listOdd
for i in a1:
    for j in listOdd:
        if i != j:
            result.append(i)
        # print i
        break
else:
    pass
print result
print len(result)

我确实尝试过使用套装和熊猫的其他方法

输出不准确,基本上第2列中的每个元素都必须与第1列的每个元素进行比较。我得到的重复条目差异很少

1 个答案:

答案 0 :(得分:0)

集合似乎是一个明显的解决方案。以下方法将每列读入其自己的net::ERR_EMPTY_RESPONSE。然后,它只是使用difference()函数为您提供set()但不在col1中的条目(这与仅使用col2运算符相同):

-

因此,如果您的CSV文件包含以下条目:

import csv

col1 = set()
col2 = set()

with open('input.csv') as f_input:
    for row in csv.reader(f_input):
        if len(row) == 2:
            col1.add(row[0])
            col2.add(row[1])
        elif len(row) == 1:
            col1.add(row[0])

print col1
print col2

print sorted(col2 - col1)

所需的输出是:

aaa,aaa
bbb,111
ccc,bbb
ddd,222
eee
fff

CSV文件中的数据在添加到集合之前可能需要进行清理,例如['111', '222'] EXAMPLE.COM目前被视为不同。

相关问题