记录一次手机联系人整理(XML文件格式处理)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了记录一次手机联系人整理(XML文件格式处理)相关的知识,希望对你有一定的参考价值。

场景:1、ios手机和android手机联系人同步时有部分重复联系人。

   2、很早以前的HTC手机导出的联系人中备注信息有大量乱码,且很多联系人生日被设置为1970-01-01,导致生日提醒软件产生骚扰问题。

适用设备平台:IOS,Android

联系人备份软件:腾讯应用宝

关键字:Python,xml

整体步骤:

  1、下载腾讯应用宝(非打广告,该支持excel,xml,csv等多种格式的联系人备份文件导入导出)

  2、手机连接PC,打开应用宝,导出联系人为xml文件。

  3、代码实现,生成新的联系人xml文件Contactrsp.xml:

 1 #!/usr/bin/env python  
 2 # encoding: utf-8  
 3 """ 
 4 @version: v1.0 
 5 @author: Elijahxb
 6 @time: 2017/12/3 12:13 
 7 """  
 8 import xml.etree.ElementTree as ET
 9 from lib.Global.GlobalPath import *#可自行定义资源文件路径变量resource_path
10 import os
11 
12 xmlPath = os.path.join(resource_path,"XML","FullContact.xml")
13 tree = ET.parse(xmlPath)
14 root = tree.getroot()
15 con_node_list = root.findall("Contact")
16 print len(con_node_list)
17 index = 0
18 con_dic = {}
19 for con_node in con_node_list:
20     PhoneList_node = con_node.find("PhoneList")
21     if PhoneList_node is not None:
22         con_name = con_node.find("Name").text
23         PhoneNumber_list = PhoneList_node.findall("Phone")
24         if PhoneNumber_list:
25             con_dic[con_name] = []
26             for PhoneNumber in PhoneNumber_list:
27                 telephone = PhoneNumber.text
28                 if telephone[:4] == ("+86-"):
29                     telephone = telephone[4:]
30                     con_dic[con_name].append(telephone)
31                 elif telephone[:3] == "400" or telephone[:4] == "0400" or telephone[:3] == "106":
32                     pass
33                 elif telephone == "18000000000":
34                     pass
35                 elif u"专线" in con_name:
36                     pass
37                 else:
38                     con_dic[con_name].append(telephone)
39             if con_dic[con_name] == []:
40                 con_dic.pop(con_name)
41     index += 1
42 print len(con_dic)
43 
44 
45 root = ET.Element("Contacts")
46 for k in con_dic:
47     print k,con_dic[k]
48     Contact_node = ET.SubElement(root,"Contact")
49     Name_node = ET.SubElement(Contact_node,"Name")
50     Name_node.text = k
51     PhoneList_node = ET.SubElement(Contact_node,"PhoneList")
52     for telephone in con_dic[k]:
53         phone_node = ET.SubElement(PhoneList_node,"Phone",{"Type":"2"})
54         phone_node.text = telephone
55 
56 tree = ET.ElementTree(root)
57 f_path = os.path.join(resource_path,"XML","Contactrsp.xml")
58 tree.write(f_path,encoding="utf-8")

 

  4、删除手机联系人,导入Contactrsp.xml文件,结束。

  5、实现效果:a.同名联系人的号码会被合并到同名联系人下。b.自定义过滤器,将拦截软件生成的400,106等号码删除,名称为**专线**的号码删除。

以上是关于记录一次手机联系人整理(XML文件格式处理)的主要内容,如果未能解决你的问题,请参考以下文章

手机相机raw是啥意思

Android中读取手机联系人

“添加联系人”activity.xml 文件在 Android Studio 中的格式不正确

微信数据库解密

Chrome读取XML一片空白,怎么处理

xml文件里的东西怎么恢复吗?