按类型解析 Vobject vcard 电话

Parsing Vobject vcard telephones by type

我正在尝试解析 vCard 对象,但在获取不同类型的电话 phone 或地址(即家庭或工作)时遇到问题。 我只能得到 phone.

的第一个实例而不能得到第二个实例
TEL;TYPE=work,voice;VALUE=uri:tel:+11115551
TEL;TYPE=home,voice;VALUE=uri:tel:+14045551

contact = vobject.readOne(s, allowQP=True)
print contact.tel.type_param
print contact.tel

这两个都有效,但它们只给我第一个 phone 号码。 我想做类似下面的事情,但这当然会给我一个错误。

print contact.tel.type_param.home
print contact.tel.work.value

按类型访问 vCard 对象的最佳方式是什么?

Vobject 没有很好的文档记录。来自方法说明:“”"Return a child's value (the first, by default), or None."”“

所以要修复它,我必须指定一个非零的子编号。

 print contact.getChildValue('tel',default = None, childNumber = 0)
 print contact.getChildValue('tel',default = None, childNumber = 1)