Разбор Vobject vcard телефонов по типу

Я пытаюсь разобрать vCard Objects и у меня возникают проблемы с получением разных типов телефонов или адресов, например, дома или на работе. Я могу получить только первый экземпляр, но не второй экземпляр телефона.

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

Они оба работают, но они дают мне только первый номер телефона. Я хочу сделать что-то вроде ниже, но, конечно, это дает мне ошибку.

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

Каков наилучший способ доступа к объектам vCard по типу?

1 ответ

Решение

Vobject не очень хорошо задокументирован. Из метода doctring: """Вернуть дочернее значение (первое по умолчанию) или None."""

Поэтому, чтобы исправить это, я должен был указать номер ребенка, отличный от нуля.

 print contact.getChildValue('tel',default = None, childNumber = 0)
 print contact.getChildValue('tel',default = None, childNumber = 1)
Другие вопросы по тегам