Python 导入通讯录:将.csv文件转换为.vcf文件
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文件的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: HTTP状态码---服务器错误
- 下一篇: 内外左右四种能力