Python 将.csv文件转换为.vcf文件

你好啊,在代码世界遨游的朋友们。应家里工作需要导入大量联系方式,就要我一个学习软件工程的弱鸡来帮忙,于是在弱鸡4小时的拼命查代码中,终于搞定了人生中第一个真实使用到的程序代码。所以我迫不及待的来我的知识源泉中写下了这个文章,因为我觉得这里写的文章太过于。。分散吧(不知道用啥词),我查了不知道多少个文章然后结合结合才搞定这一个只有几十行代码的东西,所以我想自己也写一个,一会别的萌新看到了也会一目了然,嘻嘻…

清洗数据


当我拿到我家里给我的数据时是一个Excel表格,里面有各种各样的数据,数据之中还有超链接,非常的“脏”,所以我们要进行清洗一下。因为我们导入手机通讯录的话,需要的只是文本文件,于是我将需要的数据复制到一个新的文本文档中,这样可以直接消除Excel中附加的超链接。(这里应该可以用代码解决的,但是我不会。。。原谅我还是个小菜鸡)

这时我们将原来的Excel清空,放入文本文档中的数据(复制粘贴即可),然后点击另存为.csv文件。接下来就可以交给我们的大python了:

import os
file='------------输入你要读取的csv文件的路径(我用的是绝对路径)-----------------'
def file_path_shortname_extension(file):#返回文件拓展名.csv 等(filepath,temp_filename) = os.path.split(file)(shortname,extension) = os.path.splitext(temp_filename)return (filepath,shortname,extension)def cv(file):if not os.path.isfile(file) :print("文件不存在")else:a = file_path_shortname_extension(file)[2]if a == ".csv" :print("此文件为csv文件")csv2vcf(file)print("已生成vcf文件")elif a == ".vcf":print ("此文件为vcf文件")# vcf2csv(file)print("已生成csv文件")else :print("请选择正确的csv文件或者vsf文件")
def csv2vcf(file):rf = open(file,encoding="gbk",mode = "r").read().split("\n")name = file_path_shortname_extension(file)with open(name[0]+name[1]+".vcf", "w", encoding="utf-8") as wf:content = ["BEGIN:VCARD", "VERSION:3.0","","","","END:VCARD\n\n", ]for line in rf:title = line.split("\t")if title[0] == "name":continueif title[0] == "":breakif title[1] == "":breakif not title[0] == "": content[2] = "N;CHARSET=UTF-8:"+title[0]content[3] = "FN;CHARSET=UTF-8:" + title[0]if not title[1] == "": content[4] = "TEL;TYPE=CELL:" + title[1]str="\n".join(content)wf.write(str)content = ["BEGIN:VCARD", "VERSION:3.0","","","","END:VCARD\n\n", ]print("写入完成")
if __name__ == "__main__":cv(file)

中途我遇到过的问题:
1、 在Excel另存为csv文件时,遇到了读取文件编码错误的问题,我尝试了gbk、UTF-8、GB2312,等编码,在open.read()时候都输出了乱码(我现在也不知道为啥),通过将该csv文件用文本文档打开后,在将txt文本文档中的数据覆盖进去,用gbk编码就成功了。(前提是你在txt文本文档中保存的编码是UTF-8,在文本文档另存为中可以选择编码格式)
如果编译报错,显示编码格式问题,你可以在open函数中加入errors='ignore',这样就算是乱码他也会照样输出,可以更直观的找错。
2、在进行数据分割的时候,要先通过open.read()来输出,观察输出数据的格式规律,再进行分割。切记:不可以直接死套用代码,不然报了错也不知道为什么。
今天先写这么多吧,要感谢这几个教会我的文章:
.vcf文件的基本架构
csv生成vcf
各位遇到什么问题可以私信问我哦,我看到了就会帮忙想想的,需要帮忙写小代码的也可以滴滴我呀,嘻嘻

Python 导入通讯录:将.csv文件转换为.vcf文件相关推荐

  1. Python 把csv文件转换为excel文件

    背景 由于其他部门给的数据是 csv 文件,业务人员一般都是熟悉 excel 文件,为了方便查看数据,因此需要写个程序,把 csv 文件转换为 excel 文件,由于是经常使用,小编的脚本程序,写成了 ...

  2. Python将CSV文件转换为Excel文件

    不多说,直接贴代码 from pandas.io.excel import ExcelWriter import pandas as pd with ExcelWriter('xxx.xlsx') a ...

  3. python批量pdf转word,python批量实现Word文件转换为PDF文件

    本文为大家分享了python批量转换Word文件为PDF文件的具体方法,供大家参考,具体内容如下 1.目的 通过万能的Python把一个目录下的所有Word文件转换为PDF文件. 2.遍历目录 作者总 ...

  4. python npy文件_python实现npy格式文件转换为txt文件操作

    如下代码会将npy的格式数据读出,并且输出来到控制台: import numpy as np ##设置全部数据,不输出省略号 import sys np.set_printoptions(thresh ...

  5. python 将excel文件转换为txt文件_python利用pandas将excel文件转换为txt文件的方法

    python将数据换为txt的方法有很多,可以用xlrd库实现.本人比较懒,不想按太多用的少的插件,利用已有库pandas将excel文件转换为txt文件. 直接上代码: ''' function:将 ...

  6. python如何打开npy文件_python实现npy格式文件转换为txt文件操作

    如下代码会将npy的格式数据读出,并且输出来到控制台: import numpy as np ##设置全部数据,不输出省略号 import sys np.set_printoptions(thresh ...

  7. python excel文件转换成字符串_python利用pandas将excel文件转换为txt文件的方法

    python将数据换为txt的方法有很多,可以用xlrd库实现.本人比较懒,不想按太多用的少的插件,利用已有库pandas将excel文件转换为txt文件. 直接上代码: ''' function:将 ...

  8. python中gettext文件格式_如何将gettext .mo文件转换为.po文件 - python

    Improve this question 当.po文件不再可用时,有什么方法可以将.mo文件转换为.po文件源?我需要编辑.mo文件的内容,但没有.po文件.可能吗? 参考方案 msgunfmt [ ...

  9. python批量操作word文档实战_python批量实现Word文件转换为PDF文件

    本文为大家分享了python批量转换Word文件为PDF文件的具体方法,供大家参考,具体内容如下 1.目的 通过万能的Python把一个目录下的所有Word文件转换为PDF文件. 2.遍历目录 作者总 ...

  10. C#导出到通讯录 生成微信头像跟VCF文件 并把头像保存在阿里云

    /// <summary>         /// 导出到通讯录 生成微信头像跟VCF文件         /// </summary>         /// <ret ...

最新文章

  1. 已经正常安装ssh: connect to host 192.168.4.254 port 22: Connection refused
  2. php 位运算与权限,PHP巧妙利用位运算实现网站权限管理的方法
  3. .NET MVC 学习笔记(一)— 新建MVC工程
  4. python 查看安装的第三方库的版本号
  5. 阿里云开源业内首个应用多活项目 AppActive,与社区共建云原生容灾标准
  6. 乐鑫代理启明云端分享|ESP32驱动1.54inch(240*240)彩屏
  7. Struts2-day2总结
  8. CodeForces - 1303D Fill The Bag(贪心+模拟)
  9. leetcode 119. 杨辉三角 II
  10. Vue学习笔记(四)
  11. juc包下四大并发工具
  12. 转: Protobuf 的 proto3 与 proto2 的区别
  13. Keil MDK使用方法
  14. uniapp 让支付触手可及,封装了微信支付、QQ支付、支付宝支付、京东支付、银联支付常用的支付方式以及各种常用的接口
  15. Android Wi-Fi 2.4G及5G信道一览表
  16. C++ 按值传递的切割问题(Slicing Problem)
  17. 解决Windows下“fatal: unable to checkout working tree, warning: Clone succeeded, but checkout failed.”
  18. 计算机网络——虚拟专用网与网络地址转换NAT
  19. [学习]17 每天只睡6小时,依然精力充沛
  20. BP神经网络的MATLAB源码

热门文章

  1. A Style-Aware Content Loss for Real-time HD Style Transfer(一个风格转换的风格感知损失)CVPR2018
  2. 某集团大数据平台整体架构及实施方案
  3. 【JavaWeb】Filter案例:登录验证、敏感词汇过滤
  4. Win10黑屏的时候显示时钟怎么设置
  5. COLOR_CODE
  6. 新中新电子f200a驱动安装_【电子税务局】出口退税功能上线指引
  7. android车载蓝牙开发,车载蓝牙开发二
  8. 初学STM32之使用STM32CubeMX编写跑马灯程序
  9. matlab中的imnoise信噪比,matlab语法fn=imnoise(f,'gaussian',0,0.02)是给f添加高斯噪声,其中数值0和0.02分别表示___和___?...
  10. 手机号段199/198/166,横空出世