首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >要删除vcard联系人重复项,比较.vcf文件中的两个vcard是否相等不适用于简单的== vobject比较

要删除vcard联系人重复项,比较.vcf文件中的两个vcard是否相等不适用于简单的== vobject比较
EN

Stack Overflow用户
提问于 2017-01-04 17:12:36
回答 0查看 1.1K关注 0票数 0
代码语言:javascript
复制
    #!/usr/bin/env python2.7 

    import vobject

    abfile='/foo/bar/directory/file.vcf' #ab stands for address book  

    ablist = []

    with open(abfile) as source_file:
        for vcard in vobject.readComponents(source_file):
          ablist.append(vcard)         

    print ablist[0]==ablist[1]

上面的代码应该返回True,但它没有返回,因为vcards被认为是不同的,即使它们是相同的。最终目标之一是找到一种从vcard文件中删除重复项的方法。加分:有没有一种方法可以使比较与使用Python中统一列表的快速方法之一兼容,例如:

代码语言:javascript
复制
    set(ablist) 

删除重复项?(例如,以某种方式将vcard转换为字符串...)。在上面的代码中,len(set(ablist))返回2,而不是预期的1...

相反,如果不是比较整个vcard,而是比较它的一个组件,如下所示:

代码语言:javascript
复制
    print ablist[0].fn==ablist[1].fn

然后我们确实看到了预期的行为,并收到了True作为响应...

以下是测试中使用的文件内容(只有两个相同的vcards):

代码语言:javascript
复制
    BEGIN:VCARD
    VERSION:3.0
    FN:Foo_bar1
    N:;Foo_bar1;;;
    EMAIL;TYPE=INTERNET:foobar1@foo.bar.com
    END:VCARD
    BEGIN:VCARD
    VERSION:3.0
    FN:Foo_bar1
    N:;Foo_bar1;;;
    EMAIL;TYPE=INTERNET:foobar1@foo.bar.com
    END:VCARD
EN

回答

页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41460013

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档