如何使用Python和vobject模块正确地遍历vCard(.vcf)

2024-05-19 17:38:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我一直在尝试使用vobject python模块阅读一系列vCard及其属性。这些vCard不是我自己制作的,当我下载一些vCard时,我在遍历一些冲突行时发现了一些错误。我正在使用的.vcfs的某些部分具有较小的依赖关系,在遍历文件内容时,这些依赖关系似乎会导致错误。其中一些错误是由占用多行的空间或参数等引用引起的。下面是导致问题的vCard示例以及代码。在这些示例中,我试图获取名称、电话号码、标题和电子邮件,以用于组织目的

例如:vcf:

BEGIN:VCARD
VERSION:2.1
N;CHARSET=ISO-8859-1:Example;Name;X.
FN;CHARSET=ISO-8859-1:Name Example X
ORG;CHARSET=ISO-8859-1:Example Org
TITLE;CHARSET=ISO-8859-1:Example Title
TEL;WORK;VOICE:123456789
TEL;WORK;FAX:123456789
ADR;CHARSET=ISO-8859-1;WORK:;;ABCD Tower, Tree Road Street, N.W.;Washington;DC;20006-1037;US
EMAIL;PREF;INTERNET:email@example.com
END:VCARD

BEGIN:VCARD
VERSION:2.1
N;CHARSET=ISO-8859-1:Example;Name;
FN;CHARSET=ISO-8859-1:Name Example
ORG;CHARSET=ISO-8859-1: Example org
TITLE;CHARSET=ISO-8859-1:Example title
TEL;WORK;VOICE:123456789



TEL;WORK;FAX:123456789


ADR;CHARSET=ISO-8859-1;WORK:;;1234 road, NW;Washington;
DC;20036;US

EMAIL;PREF; INTERNET:example2@example.com
END:VCARD

示例代码:

import vobject
filepath = "a string representing a filepath to a vCard stored as a .vcf"
with open(filepath) as source_file:
    for vcard in vobject.readComponents(source_file):
        print(vcard.fn.value)
        print(vcard.title.value)
        print(vcard.tel.value)
        print(vcard.email.value)

任何形式的格式化预先存在的vCard文件的方法,以保证它能与vobject模块或任何其他工具一起工作,都将是一个很大的帮助,因为我可以告诉你,我的问题是如何读取格式化的vCard。我对使用这个模块非常陌生,并且在python中使用.vcf文件,因此非常感谢您的帮助


Tags: 模块文件namevalueexample错误isowork