python实现将android手机通讯录vcf文件转化为csv
经常会遇到将手机通讯录导出到电脑并转化为在电脑中可编辑的情况,在网上搜索了很久当前不外乎两种处理方式。1.使用电脑的outlook的通讯簿功能,将手机导出的vcf文件导入到outlook的通讯录中,然后再导出为可编辑文件;2.是使用专用软件直接打开vcf文件。很不幸两种都不适合我,第一种导出到outlook后人名部分全是乱码,第二种方式下载软件后就没打开成功(有可能下载的软件与我的电脑不兼容)。
在网上也找了一些python的代码自己转化,一直没有找到合适的代码,我的vcf文件中的名称部分是qp编码格式。下面将我自己处理过程简单描述一下。
手机:华为mate系列
python环境:python3.6.2
1.首先检查导出的vcf文件用文本编辑打开,会发现是如下的一些格式,从“encoding=quoted-printable”可以看出名称部分是qp编码,对该部分进行编码才是关键
begin:vcard
version:2.1
n;charset=utf-8;encoding=quoted-printable:;=e5=86=af=e8=94=b5=e5=b6=a5;;;
fn;charset=utf-8;encoding=quoted-printable:=e5=b7=a5=20=e8=94=b6=20=e5=86=af
tel;cell:1-351-886-xxxx
end:vcard
2.导入import quopri,对qp部分进行解码,截取q p编 码内容在此不赘述
对中文名称部分进行解码: quopri.decodestring(line[43:-3]).decode('utf-8')
对英文名称部分进行解码:quopri.decodestring(line[43:]).decode('utf-8')
3.另外还有一点vcf导出的电话有些是有空格,有些是有“-‘,所以最好用以下语句规范化一下
(line[9:]).replace("-","").replace(" ","") + ",";
ok,到此基本上已经大功告成,我是写个循环,将cvf文件所有名片都循环处理一遍然后导入到一个csv文件中。
以后可以定期将手机通讯录导到电脑了。