Разбор 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)