【问题标题】:Parsing multiple vCards with Python使用 Python 解析多个 vCard
【发布时间】:2013-03-07 11:19:05
【问题描述】:

我有一个来自 Google 联系人导出功能的 vcf 文件。 它是用 UTF-8 编码的,但我的 WinMobile 电话需要将 win1251 字符导入通讯录。 我将其重新编码为 win1251 并尝试使用 vObject 库解析文件。 结果我得到的是混合字段,其中一些被正确编码为 Unicode,而另一些则被替换为“?????”文本。 例如,我包含了这样一个联系人的 prettyPrint:

 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 ???????

我在源代码中找不到一个地方,我应该应用某种 encode()/decode() 补丁来满足我的需要。 有人可以帮我吗?

【问题讨论】:

  • 您要通过的流程有点令人困惑。你是在做电话 -> 谷歌 -> 代码,还是因为你使用了期望这个词,所以你在做谷歌 -> 代码 -> 电话?

标签: python vcf-vcard vobject


【解决方案1】:

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

您要通过的流程有点令人困惑。你在做phone -&gt; google -&gt; code, 或者因为你使用了expects这个词, 你在google -&gt; code -&gt; phone吗?

answer 可能有助于转化。

【讨论】:

    猜你喜欢
    • 2016-06-19
    • 2011-03-26
    • 1970-01-01
    • 1970-01-01
    • 2011-01-29
    • 1970-01-01
    • 2023-03-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多