#!/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中统一列表的快速方法之一兼容,例如:
set(ablist) 删除重复项?(例如,以某种方式将vcard转换为字符串...)。在上面的代码中,len(set(ablist))返回2,而不是预期的1...
相反,如果不是比较整个vcard,而是比较它的一个组件,如下所示:
print ablist[0].fn==ablist[1].fn然后我们确实看到了预期的行为,并收到了True作为响应...
以下是测试中使用的文件内容(只有两个相同的vcards):
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:VCARDhttps://stackoverflow.com/questions/41460013
复制相似问题