想把手机通讯录从vcf文件格式转换到excel里,gmail不给力,win7又没装outlook,下了几个软件,不是错误一堆,就是一堆病毒,怒了,晚上用python写个小脚本试了一下,还是有几个点值得记录的。
写的比较简单,只是解决了我自己的问题,只是解析了N、FN、TEL三个字段,对三个字段的内部格式也没有做进一步的解析。github地址:https://github.com/wsxwang/pyVcf/blob/master/vcf2csv.py,
这个里面比较麻烦的是编码转换问题,有几个点可以总结:
1、vcf文件是utf-8编码,每个字符占用1~3个字节,读取之后需要打印调试时,需要转码:print str(cardcount) + " " + csvline.decode("utf-8")
2、vcf文件开头有BOM字符时,读取时要先跳过,代码:
if line[:3] == codecs.BOM_UTF8:
line = line[3:];
3、转换为csv文件时,完全无需转码,只需在文件头输出BOM字符即可,可以使用excel打开(我测试的是wps),代码:fw.write(codecs.BOM_UTF8);注意,需要引用codecs。