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

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

适用设备平台:IOS,Android

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

关键字:Python,xml

整体步骤:

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

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

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

 #!/usr/bin/env python
# encoding: utf-8
"""
@version: v1.0
@author: Elijahxb
@time: 2017/12/3 12:13
"""
import xml.etree.ElementTree as ET
from lib.Global.GlobalPath import *#可自行定义资源文件路径变量resource_path
import os xmlPath = os.path.join(resource_path,"XML","FullContact.xml")
tree = ET.parse(xmlPath)
root = tree.getroot()
con_node_list = root.findall("Contact")
print len(con_node_list)
index = 0
con_dic = {}
for con_node in con_node_list:
PhoneList_node = con_node.find("PhoneList")
if PhoneList_node is not None:
con_name = con_node.find("Name").text
PhoneNumber_list = PhoneList_node.findall("Phone")
if PhoneNumber_list:
con_dic[con_name] = []
for PhoneNumber in PhoneNumber_list:
telephone = PhoneNumber.text
if telephone[:4] == ("+86-"):
telephone = telephone[4:]
con_dic[con_name].append(telephone)
elif telephone[:3] == "" or telephone[:4] == "" or telephone[:3] == "":
pass
elif telephone == "18000000000":
pass
elif u"专线" in con_name:
pass
else:
con_dic[con_name].append(telephone)
if con_dic[con_name] == []:
con_dic.pop(con_name)
index += 1
print len(con_dic) root = ET.Element("Contacts")
for k in con_dic:
print k,con_dic[k]
Contact_node = ET.SubElement(root,"Contact")
Name_node = ET.SubElement(Contact_node,"Name")
Name_node.text = k
PhoneList_node = ET.SubElement(Contact_node,"PhoneList")
for telephone in con_dic[k]:
phone_node = ET.SubElement(PhoneList_node,"Phone",{"Type":""})
phone_node.text = telephone tree = ET.ElementTree(root)
f_path = os.path.join(resource_path,"XML","Contactrsp.xml")
tree.write(f_path,encoding="utf-8")

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

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

记录一次手机联系人整理(XML文件格式处理)的更多相关文章

  1. Android-AsyncTask异步任务(获取手机联系人)

    本篇随笔将讲解一下Android的多线程的知识,以及如何通过AsyncTask机制来实现线程之间的通信. 一.Android当中的多线程 在Android当中,当一个应用程序的组件启动的时候,并且没有 ...

  2. android131 360 05 手势触摸滑动,sim卡,开机启动的广播,手机联系人,SharedPreferences,拦截短信

    安卓手势触摸滑动: package com.itheima52.mobilesafe.activity; import android.app.Activity; import android.con ...

  3. android利用ContentResolver访问者获取手机联系人信息

    转载自:http://www.jb51.net/article/106379.htm 首先需要在AndroidManifest.xml文件中添加权限: <uses-permission andr ...

  4. Android 读取手机联系人、拨号、发送短信及长按菜单的操作

    本示例实现了读取手机联系人,拨号.发送短信及长按出现菜单选项的操作↓ 1.Andrid项目结构图↓主要操作图中红色方框内的文件. 2.首先布局代码如下↓ a, main.xml 程序运行的主界面,主要 ...

  5. Entity framewok 如何实现多条记录作为一条取出, for xml path如何实现

    http://www.myexception.cn/linq/1288046.html Entity framewok 怎么实现多条记录作为一条取出, for xml path怎么实现News表:ID ...

  6. xml文件格式例如以下

    xml文件格式例如以下:     <?xml   version="1.0"   encoding="utf-8"?>         <us ...

  7. 手势识别=读取手机联系人=ContentResolver-Day3

    手势识别=读取手机联系人=ContentResolverDay32 mobile3.0 手机设置向导页面完成 选择器没有做完成 样式提取完成 自定义控件的优化继续 抽取父类Activity 完成 手机 ...

  8. Expo大作战(三十九)--expo sdk api之 DocumentPicker,Contacts(获取手机联系人信息),Branch

    简要:本系列文章讲会对expo进行全面的介绍,本人从2017年6月份接触expo以来,对expo的研究断断续续,一路走来将近10个月,废话不多说,接下来你看到内容,讲全部来与官网 我猜去全部机翻+个人 ...

  9. cve-2010-3333 Microsoft Office Open XML文件格式转换器栈缓冲区溢出漏洞 分析

    用的是泉哥的POC来调的这个漏洞 0x0 漏洞调试    Microsoft Office Open XML文件格式转换器栈缓冲区溢出漏洞 Microsoft Office 是微软发布的非常流行的办公 ...

随机推荐

  1. Codeforces 938E Max History:排列 + 逆元【考虑单个元素的贡献】

    题目链接:http://codeforces.com/problemset/problem/938/E 题意: 定义f(a): 初始时f(a) = 0, M = 1. 枚举i = 2 to n,如果a ...

  2. 测试通过!为何线上还有很多BUG?

    质量控制 大多数测试人员认为测试工作是发现bug,虽然这是测试的主要任务,但其实测试最重要的任务是质量控制,而发现bug和验证bug只是质量控制的一个重要环节而已. 我想很多测试人员都经历过这样的场景 ...

  3. 使用JMeter建立接口测试

    [需求]某组机器是Android和iOS输入法接口服务器,有很多重要的接口,例如:升级,网络开关,热词等.现在有3台机器过保要下线,新申请了3台机器,需要验证一下这3台机器接口的正确性. [测试步骤] ...

  4. poj2942 点-双联通+二分图染色

    题意:有一群骑士要坐在一个圆形的桌子上,他们之间有些人相互讨厌,所以不能挨着,要求算出一次也不能坐在桌子上的人,每次会议桌子必须奇数个人,一个人不能开会 题解:可以先建一个补图,要满足题目条件我们只要 ...

  5. Ceph pg分裂流程及可行性分析

    转自:https://www.ustack.com/blog/ceph-pg-fenlie/ 1 pg分裂 Ceph作为一个scalable的分布式系统,集群规模会逐渐增大,为了保证数据分布的均匀性, ...

  6. 11-THREE.JS 相机始终朝向某个物体

    <!DOCTYPE html> <html> <head> <title></title> <script src="htt ...

  7. IDEA Tomcat服务器 更新.jsp时,页面刷新无法同步修改

    这是因为在配置服务时没有配置好: on frame deactivation部分

  8. 将变参格式化到一个string对象中

    该小程序演示了变参的用法.它的功能是,仿照sprintf,将变参内容保存到string中. /* 功能说明: 仿照sprintf,将字符串格式化到一个string对象中. 实现方式: 该例子主要是用来 ...

  9. PHP数据结构之实现栈

    接着前面PHP数据结构来学习,今天写的是实现栈. <?php class stack //定义一个栈的类 { private $size; //栈的空间大小 private $top; // 栈 ...

  10. GMchess Linux下的中国象棋游戏

    gmchess,一款Linux下的中国象棋程序