在没有循环的情况下在dictreader文件中查找重复的vaule

时间:2017-03-23 19:32:48

标签: python python-2.7 csv dictionary

我对Python仍然相当新,我无法看到是否找到simeple答案,我相信这是一个简单的答案。我有一个csv文件,其中包含主机名和IP列表。我需要确定文件中是否有重复的主机名或IP。我不需要纠正它或删除dup,只需告诉用户他们是假人并退出。

通常使用VB我只会将数据转储到数据表中并循环通过它,但是看起来,一旦你完成它就会使用dictreader,你必须重新打开文件。所以我希望有一种简单的方法可以将它包含在我的验证循环中。在验证数据之后,我再次打开csv和一个xml文件并将其全部写完。一切都很好。我只想在第一次通过中找到重复项。我尝试使用reader.seek [0],但显然不是dictreader的一部分。我想把它踢到一个列表但我失去了我的字段名。

with open(sys.argv[2], "r") as srcfile:
    reader = csv.DictReader(srcfile)
    reader.fieldnames = [header.lower() for header in reader.fieldnames]
    for lines in reader:
        if ip_check(lines["ipaddress"]) is False:
            print lines["ipaddress"] + " is an invalid address in the " + sys.argv[2] \
            + " file."
            sys.exit(1)
        if hostname_check(lines["hostname"]) is False:
            print lines["hostname"] + " is an invalid hostname in the " + \
            sys.argv[2] + "file."
            sys.exit(1)

1 个答案:

答案 0 :(得分:1)

如果你在dict中有项目,你可以检查dict中是否已经存在某些内容:

my_dict = {'a': 1, 'b': 2}

if 'a' in my_dict:
    print 'already seen a!'

所以你只需检查:

if new_ip in reader: 
    # do_something