我有两张vCard:
vcard1 = "BEGIN:VCARD
VERSION:3.0
N;CHARSET=UTF-8:Name;;;;
TEL:0005555000
END:VCARD"
vcard2 = "BEGIN:VCARD
VERSION:3.0
N;CHARSET=UTF-8:Name;;;;
TEL:0005555000
EMAIL;CHARSET=UTF-8:my_email@email.com
END:VCARD"
正如您所看到的,唯一的区别是第二张vcard有一个附加属性,即电子邮件?使用代码时,这两个VCARD是否可以被视为相等
import vobject
print(vobject.readOne(vcard1).serialize()==vobject.readOne(vcard2).serialize())
解决方案
任何比较的第一条规则是定义比较的基础。你甚至可以比较苹果和桔子,只要你想找到一个可以比较的数量:比如“多少苹果和桔子”或者“5个苹果和5个桔子的重量”。比较的基本基础的定义必须是明确的
将这个概念扩展到您的用例中,您可以将
vcards
与每个字段进行比较,然后还可以与所有字段进行比较。例如,我向您展示了三种比较方法:Example A1
:只比较vcard1
和vcard2
之间的commmon文件李>Example A2
:比较vcard1
和vcard2
之间的所有文件李>Example A3
:在vcard1
和vcard2
之间只比较commmon用户指定的文件李>显然,在这种情况下,如果比较
vcard1
和vcard2
的序列化版本,它将返回False
,因为这两个vCard的内容不同范例
在每种情况下(
A1, A2, A3
),自定义函数compare_vcards()
返回两个结果:match
:adict
,在每个字段的级别提供匹配项summary
:adict
,给出聚合绝对匹配(如果所有字段都匹配)和相对匹配(比例:[0,1]
)匹配(适合部分匹配)李>代码
虚拟数据
参考资料
相关问题 更多 >
编程相关推荐