用Python解析多个电子名片

问题描述:

我有一个来自Google的联系人导出功能的vcf文件。 它用UTF-8编码,但我的WinMobile电话预计win1251字符导入联系人。 我将它重新编码到win1251中,并尝试使用vObject库解析文件。 我得到的结果是一些字段的组合被正确编码为Unicode,有些被替换为“?????”文本。 例如,我有这样的接触的prettyPrint:用Python解析多个电子名片

VCARD 
    TEL: +7812000000 
    params for TEL: 
     aKey TYPE [u'CELL'] 
    TEL: +7921000000 
    params for TEL: 
     aKey TYPE [u'HOME'] 
    URL: http\://www.diamantstroy.spb.ru 
    X-ABLABEL: _$!<HomePage>!$_ 
    N: Alexei ??????? 
    VERSION: 3.0 
    ORG: [u'\u041e\u041e\u041e \u0414\u0438\u0430\u043c\u0430\u043d\u0442-\u0421\u0442\u0440\u043e\u0439-\u0421\u0435\u0440\u0432\u0438\u0441'] 
    FN: Alexei ??????? 

我找不到在源代码的地方,我应该使用某种形式的编码()/解码()补丁的适合我的需要。 有人可以帮我吗?

+0

这是有点混淆你正在通过什么流程。你正在做手机 - >谷歌 - >代码,或者因为你使用的字预计,你在做谷歌 - >代码 - >手机? – tmthydvnprt 2015-05-05 02:41:27

当您将其传递给readOne(或您正在使用的任何解析函数)时,请确保您的输入是unicode。如果您想回到Windows-1251编码,请在解析电子卡片后使用result.encode('cp1251')codecs.open(filename, 'w', 'cp1251').write(result)

这是一个有点令人困惑的流程,你要通过。你在做phone -> google -> code, 或自你使用expects这个词, 你在做google -> code -> phone

answer可能有助于转换。