首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将联系人字典转换为电子名片(*.vcf文件)?

如何将联系人字典转换为电子名片(*.vcf文件)?
EN

Stack Overflow用户
提问于 2019-08-06 09:55:45
回答 1查看 1K关注 0票数 1

我正在用python处理一些vcard文件。我已经把vcard文件解析成字典了。现在我想在编辑之后将它保存到一个新的vcf文件中。我找不到任何解决方案。vcards中有没有解析python字典的库或模块?

代码语言:javascript
复制
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文件,如下所示。

代码语言:javascript
复制
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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-08-06 10:13:27

你可能应该看看这里的vobject http://eventable.github.io/vobject/

代码语言:javascript
复制
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的情况下写入卡将省略BEGINEND,并且生成的文件将不是有效的vCard。我不确定是否有更方便的方法来使用这个库,但是您可以简单地创建您自己的类,这个类继承自现有的类(或者从新的类调用函数)来清理代码。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57367944

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档