我一直在尝试使用 vobject python 模块读取一系列 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 文件,因此非常感谢任何帮助!