我正在使用python处理某些vcard文件。我已将vcard文件解析为字典。现在,我想在编辑后将其保存到新的vcf文件中。我找不到任何解决方案。是否有任何库或模块可以解析vcard中的python词典?
person = {'n': 'Forrest Gump',
'fn': 'Forrest Gump', 'tel': '(111) 555-1212',
'email': 'forrestgump@example.com',
'photo': ';http://www.example.com/dir_photos/my_photo.gif',
'adr': 'Kathmandu, Nepal'}
在给这本字典时,我想获得如下的vcf文件。
BEGIN:VCARD
VERSION:3.0
N:Gump;Forrest;;Mr.;
FN:Forrest Gump
TITLE:Shrimp Man
PHOTO;VALUE=URI;TYPE=GIF:;http://www.example.com/dir_photos/my_photo.gif
EMAIL:forrestgump@example.com
END:VCARD
答案 0 :(得分:1)
您可能应该在http://eventable.github.io/vobject/此处查看vobject
import vobject
person = {'n': 'Forrest Gump',
'fn': 'Forrest Gump', 'tel': '(111) 555-1212',
'email': 'forrestgump@example.com',
'photo': ';http://www.example.com/dir_photos/my_photo.gif',
'adr': 'Kathmandu, Nepal'}
vcard = vobject.readOne('\n'.join([f'{k}:{v}' for k, v in person.items()]))
vcard.name = 'VCARD'
vcard.useBegin = True
vcard.prettyPrint()
with open('test.vcf', 'w', newline='') as f:
f.write(vcard.serialize())
请注意,写入未设置.name
和.useBegin
的卡将省略BEGIN
和END
,并且生成的文件将不是有效的vCard。我不确定是否可以使用该库来执行此操作,但是您可以简单地创建一个从现有类继承的类(或从新类调用函数)来清理代码。>