本篇內(nèi)容主要講解“如何解決csv文件讀寫亂碼問題”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“如何解決csv文件讀寫亂碼問題”吧!
為萬安等地區(qū)用戶提供了全套網(wǎng)頁設計制作服務,及萬安網(wǎng)站建設行業(yè)解決方案。主營業(yè)務為做網(wǎng)站、成都網(wǎng)站設計、萬安網(wǎng)站設計,以傳統(tǒng)方式定制建設網(wǎng)站,并提供域名空間備案等一條龍服務,秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務。我們深信只要達到每一位用戶的要求,就會得到認可,從而選擇與我們長期合作。這樣,我們也可以走得更遠!
可能你有類似經(jīng)歷,用excel打開一個csv文件,中文全部顯示亂碼。然后,手動用notepad++打開,修改編碼為utf-8并保存后,再用excel打開顯示正常。
今天使用Python,很少代碼就能將上面過程自動化。首先,導入3個模塊:
# coding: utf-8 # @author: zhenguo # @date: 2020-12-16 # @describe: functions about automatic file processing import pandas as pd import os import chardet
chardet 模塊用于得到文件的編碼格式,pandas 按照這個格式讀取,然后保存為xlsx格式。
獲取filename文件的編碼格式:
def get_encoding(filename): """ 返回文件編碼格式 """ with open(filename,'rb') as f: return chardet.detect(f.read())['encoding']
保存為utf-8編碼xlsx格式文件,支持csv, xls, xlsx 格式的文件亂碼處理。需要注意,如果讀入文件為csv格式,保存時要使用xlsx格式:
def to_utf8(filename): """ 保存為 to_utf-8 """ encoding = get_encoding(filename) ext = os.path.splitext(filename) if ext[1] =='.csv': if 'gb' in encoding or 'GB' in encoding: df = pd.read_csv(filename,engine='python',encoding='GBK') else: df = pd.read_csv(filename,engine='python',encoding='utf-8') df.to_excel(ext[0]+'.xlsx') elif ext[1]=='.xls' or ext[1] == '.xlsx': if 'gb' in encoding or 'GB' in encoding: df = pd.read_excel(filename,encoding='GBK') else: df = pd.read_excel(filename,encoding='utf-8') df.to_excel(filename) else: print('only support csv, xls, xlsx format')
上面函數(shù)實現(xiàn)單個文件轉化,下面batch_to_utf8 實現(xiàn)目錄 path 下所有后綴為ext_name文件的批量亂碼轉化:
def batch_to_utf8(path,ext_name='csv'): """ path下,后綴為 ext_name的亂碼文件,批量轉化為可讀文件 """ for file in os.listdir(path): if os.path.splitext(file)[1]=='.'+ext_name: to_utf8(os.path.join(path,file))
調用:
if __name__ == '__main__': batch_to_utf8('.') # 對當前目錄下的所有csv文件保存為xlsx格式,utf-8編碼的文件
文件讀寫時亂碼問題,經(jīng)常會遇到,相信今天這篇文章里的to_utf8,batch_to_utf8函數(shù)會解決這個問題,你如果后面遇到,不妨直接引用這兩個函數(shù)嘗試下。
到此,相信大家對“如何解決csv文件讀寫亂碼問題”有了更深的了解,不妨來實際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關內(nèi)容可以進入相關頻道進行查詢,關注我們,繼續(xù)學習!
文章名稱:如何解決csv文件讀寫亂碼問題
文章URL:http://www.chinadenli.net/article30/jcoeso.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供企業(yè)建站、App設計、、網(wǎng)站維護、微信小程序、網(wǎng)站導航
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)