老父亲从手机导出了一个vcf格式的通讯录,让我帮他转成excel格式的好打印出来,我根据百度捣鼓了半天都没有成功。生气了,还是伟人说得好,自己动手,丰衣足食。
用文本编辑器打开vcf一看,就是文本格式,我只需要把它转换成csv格式,然后就可以导入到Excel中了,cvf中每个名片的格式大概如下:
BEGIN:VCARD
VERSION:3.0
N:x;xx;;;
FN:xxx
TEL;TYPE=CELL:13333333333
TEL;TYPE=HOME:01088887777
END:VCARD
从内容看,只需要取"FN:"、"TEL"打头的字段,遇到"END"再开始下一个名片
Python代码如下:
with open("f:/contacts.vcf", 'r') as rf, open('e:/contacts.csv', 'w') as wf:
content = ['', '', '', '']
tel = 0
for line in rf.readlines():
if line.startswith('FN:'):
content[0] = line[3:].strip()
elif line.startswith('TEL'):
if tel > 2:
continue
pos = line.find(':')
content[tel + 1] = line[pos + 1:].strip()
tel = tel + 1
elif line.startswith('END'):
str = ','.join(content) + '\n'
wf.write(str)
content = ['', '', '', '']
tel = 0
E盘根目录下csv就出来了,然后打开Excel,数据->导入->编辑,把电话号码的那几列都改成文本,否则不是变成科学计数法就是电话号码最前面的0会丢,然后确定、保存,结束!