導航:首頁 > 編程語言 > python處理excel亂碼

python處理excel亂碼

發布時間:2025-05-16 18:09:01

A. 亂碼文件怎麼刪除

亂碼文件怎麼刪除(亂碼文件電腦 怎麼刪除掉)

當我們用 python 來處理有亂碼的文件時,經常會遇到編碼錯誤,有時候不得不加一個 errors = 'ignore' 參數來忽略錯誤,

今天分享一下如何用 Python 刪除這些亂碼,得到一個干凈的文件。

先說下思路:用二進制方式打開文件,這樣就不會出現編碼問題,然後讀取每一個位元組,只要這個位元組不在我們使用編碼的范圍內,就把它踢掉,然後保存剩下的位元組,我們得到的就是一個干凈的文件。

比如說這樣 ascii 編碼的文件,它含有亂碼:

處理完之後是這樣的:

代碼是這樣寫的:

import struct def is_good_byte(b): """ 電腦 可以自定義什麼是好位元組,比如 GBK 的位元組范圍可以在這里定義好 """ return b <= 127def clean_bytes(bs): return 電腦 filter(is_good_byte, bs)def clean_file_bin(): with open("names.txt", mode = "rb") as reader: 電腦 with open("cleaned_names.txt", mode = "wb") as writer: for line in reader: for byte in clean_bytes(line): writer.write(struct.pack('B',byte))if __name__ == '__main__': clean_file_bin()

上面這段代碼是一個位元組一個位元組來處理的,如果是多位元組編碼,可以自行修改代碼邏輯,比如一次讀取 3 個位元組,判斷這三個位元組是否一個合法的位元組組合。

對於中英文混合的,比如:

>>> x'abc中國'>>> x.encode("GBK")b'abcxd6xd0xb9xfa'>>> for i in x.encode("GBK"):... print(i)...979899214208185250>>>

需要綜合判斷,先判斷是否英文字母,是的就放行,然後看接下來的兩個位元組是否在 GBK 的編碼范圍之內,是的就放行,不是就要刪除,看看是刪除一個位元組,還是兩個位元組就要繼續判斷了。刪除的依據就是不會造成更多亂碼。

電腦

原文鏈接:

https://mp.weixin.qq.com/s/ZhsbGIoR6HkJHetlOjStWQ


電腦 電腦

B. 超簡單:Python 5步去中國式報表表頭

面對帶有中國式報表表頭的Excel文件,繁瑣的手動調整操作可能會給數據處理帶來極大不便。為提高效率,通過Python進行自動化處理成為了一個更加便捷的選擇。下面是使用Python進行簡單步驟處理的方法:

為了適應您的工作需求,確保代碼的通用性與靈活性,請將「file_path」修改為您所需的文件路徑,路徑應為Windows系統文件路徑,並在路徑前後添加單引號或雙引號。同時,文件路徑允許包含中文字元。

在處理時,選擇一個適合的文件名,即「df」,您可以根據實際情況進行修改。

若報表表頭為多行,例如第二行開始,設置「skiprow=1」;如果表頭包含n行,則將「skiprow」值調整為n-1。

「name=None」部分無需改動。

針對數據范圍的讀取,使用「usecols=』A:AH』」進行指定。若不需特定列范圍,可省略此步驟。對於非連續列的讀取,可以採用「usecols=『A,C,E:AH』」的格式,其中單列間用英文逗號分隔,連續列用英文冒號。

如果文件包含多個sheet頁,需要在「sheet_name」參數中列出,例如「sheet_name=['sheet名稱', 'sheet名稱']」。注意,英文名稱需注意大小寫。

在進行數據處理後,保存文件時確保與「df」保持一致性,並選擇期望的導出位置及文件名。此操作將自動覆蓋同名文件。

在處理過程中,使用英文中括弧「[]」定義列名,並確保其順序與「usecols」一致。列名使用英文時,輸入更加便捷。中文列名應使用單引號或雙引號括起。

最後,根據實際需求調整「encoding」參數,以解決中文字元可能導致的亂碼問題。默認設置通常能夠滿足基本需求,無需額外調整。

綜上所述,通過上述Python代碼的五個步驟,您可實現高效處理帶有中國式報表表頭的Excel文件,大大提升工作效率,並確保工作流程的一致性與穩定性。

C. python解決csv文件用excel打開亂碼問題

【問題】

python輸出的csv文件用excel打開,裡面的中文會變成亂碼,但用window下的記事本或mac下的numbers打開就正常顯示。

原因是python輸出的文件是utf-8編碼寫入的,excel默認以gbk方式讀取,導致亂碼發生。

【解決方法1】文件產出時encoding設置為utf-8-sig    

用excel打開csv時,excel會先檢查文件的第一個字元,來了解這個文件是什麼編碼方式,如果這個字元是BOM,excel就知道用utf-8的方式打開這個文件。python自帶了處理BOM的編碼方式uft-8-sig,因此只需要在文件產出時將encoding設置為utf-8-sig。

如果文件不是由python產出的,只需要以utf-8方式讀入再以utf-8-sig方式存儲即可

【解決方法2】懶人法,適用只含簡體中文的文件

用記事本打開,點擊另存為,右下角編碼方式選擇「ANSI」,這個過程是把這個文件改成gbk編碼格式,excel就是默認用gbk方式打開的。

參考: Python寫的csv文件,如何讓 Excel 雙擊打開不亂碼? - 雲+社區 - 騰訊雲

對編碼格式一竅不通的可以閱讀以下網頁

python筆記——二進制和文件編碼_砍柴姑娘Jourosy的博客-CSDN博客

編碼方式之ASCII、ANSI、Unicode概述 - 藍海人 - 博客園

【簡單總結】:

1. 首先需要了解 字元集 和 字元編碼 兩個概念,字元集定義了字元和二進制的一一對應關系,字元編碼規定了如何將字元的編號存儲到計算機中。

2. Unicode是字元集,包含了全球文字的唯一編碼,utf-8是編碼方式,將unicode以某種方式存儲到計算機中。

3. 有些字元集和編碼是結合在一起的,稱作字元集還是編碼都無所謂,比如ASCII,GBK

4. ANSI是各個國家地區不同擴展編碼方式的總稱,互不兼容(可以看出來通用性沒有utf好)

5. 不同編碼方式在轉換時,通常需要以unicode作為中間編碼,即先將其他編碼的字元串解碼(decode)成unicode,再從unicode編碼(encode)成另一種編碼。

閱讀全文

與python處理excel亂碼相關的資料

熱點內容
上海政務APP叫什麼 瀏覽:812
黑馬程序員一線薪資 瀏覽:109
滴滴app有青桔優惠券怎麼用 瀏覽:123
刪哪幾個文件夾加速 瀏覽:28
創建電影源碼爬取項目 瀏覽:453
java多餘的空格 瀏覽:83
手機軟體連接雲伺服器 瀏覽:888
內圓弧編程實例 瀏覽:48
餅干pdf 瀏覽:423
kylin源碼大全 瀏覽:687
android構建工具 瀏覽:422
zigy命令行選項不兼容 瀏覽:561
加密系統能錄屏嗎 瀏覽:190
安卓淘寶點進去跳鏈接如何關閉 瀏覽:786
u盤加密了手機讀取不了 瀏覽:947
oracle11g啟動命令 瀏覽:931
怎麼把視頻傳到自己的文件夾 瀏覽:700
福州電動車在哪個app上搖號 瀏覽:818
禮書PDF 瀏覽:667
什麼app看本子 瀏覽:394