最新在处理手机通信录的时候,导出的手机通信录的文件VCF文件的内容如下:
BEGIN:VCARD
VERSION:3.0
N:某;某某;;;
FN:某某某
UID:4895408015803136
TEL;TYPE=mobile:134 xxxx xxxx
END:VCARD
就编写了一段python代码进行解析,详细的代码如下,以作为备忘:
def main():
file=open('my.vcf','r',encoding='utf-8')
name=''
phone=''
out =open('my_name.txt','w',encoding='utf-8')
out1 =open('my_noname.txt','w',encoding='utf-8')
for line in file:
line=line.strip('\n')
if line == 'BEGIN:VCARD':
print('Card start')
continue
elif line=='END:VCARD':
print('Card End')
out.write(name+','+phone+'\n')
out1.write(phone+'\n')
continue
else:
contents = line.split(':')
if contents[0] == 'FN':
name = contents[1]
continue
elif 'mobile' in contents[0]:
phone = contents[1].replace(' ','')
phone=phone.replace('-','')
if phone.startswith('+'):
phone=phone[3:14]
continue
file.close()
out.close()
out1.close()
if __name__ == '__main__':
main()
在以上的代码是主要提取了联系人的名称和手机号码,分别写入两个文件中,作为其他的备用。所以关注的内容那就是名片的开始和结束,以及name和手机号码两个字段,如果你还关心其他的字段可以在逻辑控制中加入其他的相关字段的提取。
ps:代码运行的环境
操作系统:windows 10
开发IDE:PyCharm
Python的版本:3.5.1