【问题标题】:Creating a multiple phone vCard using vObject使用 vObject 创建多电话 vCard
【发布时间】:2012-11-13 05:17:51
【问题描述】:

我使用 vObject 创建 vCard。除了无法添加多个电话号码外,一切正常。

我现在正在这样做:

v.add('tel')
v.tel.type_param = 'WORK'
v.tel.value = employee.office_phone

v.add('tel')
v.tel.type_param = 'FAX'
v.tel.value = employee.fax

因为它是一个键值,所以工作电话被传真号码覆盖。

知道谁做对了吗?

谢谢!

【问题讨论】:

  • 可能v.tel 需要像列表或数组一样访问,例如v.tel[0].type_param = 'WORK'。或者v.add() 可能会返回一个对象,这是您应该将 type_param 和值分配给的对象,例如 tel = v.add('tel'); tel.type_param = 'WORK'

标签: python vcf-vcard vobject


【解决方案1】:

add() 方法返回一个特定的对象,可以用来填充更多的数据:

import vobject

j = vobject.vCard()
o = j.add('fn')
o.value = "Meiner Einer"

o = j.add('n')
o.value = vobject.vcard.Name( family='Einer', given='Meiner' )

o = j.add('tel')
o.type_param = "cell"
o.value = '+321 987 654321'

o = j.add('tel')
o.type_param = "work"
o.value = '+01 88 77 66 55'

o = j.add('tel')
o.type_param = "home"
o.value = '+49 181 99 00 00 00'

print(j.serialize())

输出:

BEGIN:VCARD
VERSION:3.0
FN:Meiner Einer
N:Einer;Meiner;;;
TEL;TYPE=cell:+321 987 654321
TEL;TYPE=work:+01 88 77 66 55
TEL;TYPE=home:+49 181 99 00 00 00
END:VCARD

【讨论】:

  • 如何编辑当前联系人姓名?现在 add 函数只是添加了另一行 N。我只是想更改当前的 N 行。
  • j.n 应该为您提供当前的 N 行
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-19
  • 1970-01-01
  • 1970-01-01
  • 2023-03-05
相关资源
最近更新 更多