pta通讯录排序用python实现,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文件中。

以后可以定期将手机通讯录导到电脑了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/394947.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

从物联网发展历程看区块链挑战

2009年,中本聪发布了第一个比特币节点,五年后区块链俨然成为一个规模巨大的产业。 虽然看起来,基于区块链的新的商业时代距离我们似乎只有一步之遥,但在2016年,我们已经意识到区块链产业不会那么快获得成功。 早期的新…

编程软件python是什么意思_程序员Python编程必备5大工具,你用过几个?

Python是编程入门不错的选择,现在也有不少的程序员业余时间会研究这门编程语言。 学习Python有时候没有第一时间找到好工具,会吃不少的苦头。毕竟好的工具能将工作效率多倍速提升。下面W3Cschool给小伙伴们推荐Python编程必备的5大工具: 0、I…

Linux ReviewBoard安装与配置

目录 0. 引言1. 安装步骤2. 配置站点 2.1 创建数据库2.2 开始安装2.3 修改文件访问权限2.4 Web服务器配置2.5 修改django相关配置正文 回到顶部0. 引言 环境:Ubuntu 14.04 Server(虚拟机) 这篇文章里说的是review board官方的安装方式&#x…

小程序 graphql_GraphQL应用程序中的五个常见问题(以及如何解决)

小程序 graphqlby Sacha Greif由Sacha Greif GraphQL应用程序中的五个常见问题(以及如何解决) (Five Common Problems in GraphQL Apps (And How to Fix Them)) 了解如何释放GraphQL的强大功能而不会遭受缺点 (Learn to unlock the power of GraphQL without suffering its dr…

又拍云 php5月18号那,又拍云文档中心

移动流量平台概述又拍云手机流量营销平台,整合移动、电信、联通三大运营商流量资源,将强大的流量营销服务,通过接口等形式提供给商家合作伙伴,帮助商家开展品牌宣传、APP/游戏/微信公众号/网站的拉新与促活等多种营销活动。通过接…

SQL SERVER2000将多行查询结果拼接到一行数据及函数的创建

处理前的查询结果如上图: 通过借助SQL变量的定义 DECLARE Scope varchar(1000) DECLARE Num int SET Scope SET Num 1 SELECT ScopeScopeconvert(varchar(8),Num)、DescScope DescOper;, Num Num1 From fuel_contractQualityNew Where ContractID0120090001…

kindeditor简单使用

先引入&#xff1a; <script src"/static/jquery-3.3.1.min.js"></script><script src"/static/kindeditor-4.1.11-zh-CN/kindeditor/kindeditor-all.js"></script> 基本使用参数&#xff1a; $(function () {KindEditor.create(#…

windows nginx c++读取请求数据_轻松应对百万并发的Nginx,搞懂LinuxC/C++这些技术栈升职加薪...

在深入了解 Nginx 各种原理及在极端场景下的一些错误场景处理时&#xff0c;需要首先理解什么是网络事件。Nginx 是一个事件驱动的框架&#xff0c;所谓事件主要指的是网络事件&#xff0c;Nginx 每个网络连接会对应两个网络事件&#xff0c;一个读事件一个写事件。在深入了解 …

github 6月开源项目_我的开源项目如何在短短5天内在GitHub上赢得6,000颗星

github 6月开源项目Last month I launched two open source projects on GitHub. A few days later, my Front-End Checklist was showing more than 6,000 stars (17,000 as of writing). And I got 600 stars for my Resources-Front-End-Beginner project!上个月&#xff0c…

如何成为一位牛逼的高手

郑昀 演讲稿 创建于2016/9/15 最后更新于2016/9/21 很多人都在思考一个问题&#xff1a; 怎样才能想出来一个牛逼的 idea&#xff1f; 有一位喜欢抽烟喝酒烫头的大师 给出了答案&#xff1a; 这事儿吧&#xff0c;简单&#xff0c;一共分两步。 第一步先让自己成为一个牛逼的人…

thinkphp html php文件,ThinkPHP生成静态HTML文件

View.class.php/*** 加载模板和页面输出 可以返回输出内容* access public* param string $templateFile 模板文件名* param string $charset 模板输出字符集* param string $contentType 输出类型* param string $content 模板输出内容* param string $prefix 模板缓存前缀* r…

day01语法python入门_2

十&#xff1a;while循环 1.基本循环 while条件#循环体#如果条件为真&#xff0c;那么循环体则执行#如果条件为假&#xff0c;那么循环体不执行。2.break break 用于退出所有循环 while True:print "123"breakprint "456"3.continue while True:print &quo…

Python dict() 函数

Python dict() 函数 Python 内置函数 描述 dict() 函数用于创建一个字典。 语法 dict 语法&#xff1a; class dict(**kwarg) class dict(mapping, **kwarg) class dict(iterable, **kwarg) 参数说明&#xff1a; **kwargs -- 关键字mapping -- 元素的容器。iterable -- 可迭代…

贝塞尔曲线:原理、自定义贝塞尔曲线View、使用!!!

一、原理 转自&#xff1a;http://www.2cto.com/kf/201401/275838.html Android动画学习Demo(3) 沿着贝塞尔曲线移动的Property Animation Property Animation中最重要&#xff0c;最基础的一个类就是ValueAnimator了。Property Animation利用ValueAnimator来跟踪记录对象属性已…

ios pusher使用_如何使用JavaScript和Pusher构建实时图

ios pusher使用by Rahat Khanna通过拉哈特汉娜 如何使用JavaScript和Pusher构建实时图 (How to build a Realtime Graph using JavaScript and Pusher) The world needs everything uber-fast now. There are plenty of data streams being generated by different systems ev…

python数据分析与基础实战_《python数据分析与挖掘实战》基础概念

数据建模.png 数据挖掘的基本任务:利用分类与预测、聚类分析、关联规则、时序模式、偏差检测、智能推荐等方法&#xff0c;帮助企业提取数据中蕴含的商业价值&#xff0c;提高企业竞争力。 数据探索&#xff1a;异常值分析、缺失值分析、相关分析和周期性分析。 数据预处理:数据…

简述JAVA线程调度的原理,Rxjava原理(二)--线程调度

1. 创建线程池和线程管理策略分析// 在开发中使用Rxjava来完成线程切换会调用到以下方法(还有几个就不一一列举了&#xff0c;原理一样的)&#xff0c;那么就从这里开始分析Schedulers.io()Schedulers.computation()Schedulers.newThread()AndroidSchedulers.mainThread()当我们…

[前端随笔][css] 弹性布局

说在前面 弹性布局&#xff0c;顾名思义就是有弹性&#xff0c;能够根据屏幕/当前空间大小自由伸缩的。使用弹性布局可以很好的适应各种尺寸的客户端。 关键代码 display:flex;    设定元素为弹性布局  <文档传送门> box-flex: 参数;   设定元素为弹性布局  &…

不同的模块中定义同样的宏为不同的值合法吗_如何创建自定义的建模规范

本文摘要&#xff1a;主要介绍如何创建自定义的建模规范检查&#xff0c;以及在建模规范检查中&#xff0c;如何增加自动修正模型使之符合规范。比如我们想创建一个自定义的规则&#xff0c;对于constant模块&#xff0c;1. 如果value是参数的话&#xff0c;则输出数据类型必须…

DBCP连接池配置常用参数说明

参数默认值说明username\传递给JDBC驱动的用于建立连接的用户名password\传递给JDBC驱动的用于建立连接的密码url\传递给JDBC驱动的用于建立连接的URLdriverClassName\使用的JDBC驱动的完整有效的Java 类名initialSize 0初始化连接:连接池启动时创建的初始化连接数量,1.2版本后…