怎麼利用python解決csv檔案讀寫亂碼問題

2021-10-12 09:35:07 字數 1830 閱讀 6125

怎麼利用python解決csv檔案讀寫亂碼問題?今天番茄加速就來說一下。

首先,匯入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』)

上面函式實現單個檔案轉化,下面batch_to_utf8 實現目錄 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))

呼叫:ifname== 『main』:

batch_to_utf8(』.』) # 對當前目錄下的所有csv檔案儲存為xlsx格式,utf-8編碼的檔案

檔案讀寫時亂碼問題,經常會遇到,相信今天這篇文章裡的to_utf8,batch_to_utf8函式會解決這個問題,你如果後面遇到,不妨直接引用這兩個函式嘗試下。

利用Python處理CSV 檔案

csv 檔案 將資料作為一系列以逗號分隔的值寫入檔案,通俗的講就是兩個逗號的資訊之間看作乙個資料。csv模組包含在python標準庫中,可用於分析csv檔案中的資料行 import csv 利用matplotlib繪圖 from matplotlib import pyplot as plt fil...

python中利用CSV庫讀寫csv檔案

csv檔案 逗號分隔值 comma separated values,csv,有時也稱為字元分隔值,因為分隔字元也可以不是逗號 其檔案以純文字形式儲存 資料 數字和文字 首先我們先 看一下資料 我們建立了兩個csv檔案,乙個是英文的,乙個是帶有中文的 需要加上,encoding utf 8 不然會有...

利用python中的csv庫讀寫csv檔案

python讀寫csv檔案就我知道的方法有 1 利用csv庫,2 利用讀寫txt檔案的方式處理,3 利用numpy或pandas庫處理 在這篇部落格中,博主就進行了比較詳細的介紹 python中csv檔案的若干讀寫方法 這篇部落格就說一說如何利用csv庫來讀寫csv檔案本部落格參考自多篇網上資料,列...