Python如何實(shí)現(xiàn)讀取csv文件時(shí)忽略文件的編碼格式
1、背景介紹
我們?cè)偃粘Wx取csv文件的時(shí)候經(jīng)常會(huì)發(fā)現(xiàn)csv文件的格式有多種,常見的有【UTF-8】\【GBK】\ 【ANSI】格式,我們?cè)僮x取的時(shí)候會(huì)加上encoding="xx"參數(shù),為了,方便我們可以使用 chardet.detect()檢測(cè)文件編碼。
- 編碼檢測(cè):通過chardet自動(dòng)檢測(cè)文件編碼,確保正確讀取文件內(nèi)容。
- 異常處理:對(duì)可能出現(xiàn)的編碼錯(cuò)誤進(jìn)行處理,提供備用的UTF-8編碼讀取方案。
- CSV處理:使用標(biāo)準(zhǔn)庫csv模塊讀取并打印CSV文件內(nèi)容,包括表頭和數(shù)據(jù)行。
2、庫的安裝
庫 | 用途 | 安裝 |
---|---|---|
csv | csv文件的讀寫 | 內(nèi)置庫無需安裝 |
3、核心代碼
①:到的編碼格式
def detect_encoding(file_path): with open(file_path, 'rb') as f: raw_data = f.read() result = chardet.detect(raw_data) return result['encoding']
②:調(diào)用detect_encoding函數(shù)獲取文件的編碼格式
def main(): file_path = '新建XLSX 工作表.csv' encoding = detect_encoding(file_path) try: read_csv(file_path, encoding) except UnicodeDecodeError: # 如果檢測(cè)到的編碼格式讀取失敗,嘗試使用 UTF-8 編碼讀取 try: read_csv(file_path, 'utf-8') except Exception as e: print(f"讀取文件時(shí)發(fā)生錯(cuò)誤: {e}") except Exception as e: print(f"讀取文件時(shí)發(fā)生錯(cuò)誤: {e}")
4、完整代碼
# -*- coding: UTF-8 -*- ''' @Project :測(cè)試 @File :test2_read_csv.py @IDE :PyCharm @Author :一晌小貪歡(278865463@qq.com) @Date :2025/3/1 21:40 ''' import csv import chardet def detect_encoding(file_path): with open(file_path, 'rb') as f: raw_data = f.read() result = chardet.detect(raw_data) return result['encoding'] def read_csv(file_path, encoding): with open(file_path, 'r', encoding=encoding) as f: reader = csv.reader(f) head = next(reader) print("表頭", head) for row in reader: print(row) def main(): file_path = '新建XLSX 工作表.csv' encoding = detect_encoding(file_path) try: read_csv(file_path, encoding) except UnicodeDecodeError: # 如果檢測(cè)到的編碼格式讀取失敗,嘗試使用 UTF-8 編碼讀取 try: read_csv(file_path, 'utf-8') except Exception as e: print(f"讀取文件時(shí)發(fā)生錯(cuò)誤: {e}") except Exception as e: print(f"讀取文件時(shí)發(fā)生錯(cuò)誤: {e}") if __name__ == "__main__": main()
到此這篇關(guān)于Python如何實(shí)現(xiàn)讀取csv文件時(shí)忽略文件的編碼格式的文章就介紹到這了,更多相關(guān)Python讀取csv內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python matplotlib畫圖實(shí)例代碼分享
這篇文章主要介紹了python matplotlib畫圖實(shí)例代碼分享,具有一定借鑒價(jià)值,需要的朋友可以參考下2017-12-12Pandas刪除數(shù)據(jù)的幾種情況(小結(jié))
這篇文章主要介紹了Pandas刪除數(shù)據(jù)的幾種情況(小結(jié)),詳細(xì)的介紹了4種方式,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-06-06pymongo如何通過oplog獲取數(shù)據(jù)(mongodb)
使用MongoDB的oplog(操作日志)進(jìn)行數(shù)據(jù)同步是高級(jí)的用法,主要用于復(fù)制和故障恢復(fù),這篇文章主要介紹了pymongo通過oplog獲取數(shù)據(jù)(mongodb),需要的朋友可以參考下2023-09-09