Python如何實(shí)現(xiàn)讀取csv文件時(shí)忽略文件的編碼格式
1、背景介紹
我們再日常讀取csv文件的時(shí)候經(jīng)常會發(fā)現(xiàn)csv文件的格式有多種,常見的有【UTF-8】\【GBK】\ 【ANSI】格式,我們再讀取的時(shí)候會加上encoding="xx"參數(shù),為了,方便我們可以使用 chardet.detect()檢測文件編碼。
- 編碼檢測:通過chardet自動檢測文件編碼,確保正確讀取文件內(nèi)容。
- 異常處理:對可能出現(xiàn)的編碼錯誤進(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:
# 如果檢測到的編碼格式讀取失敗,嘗試使用 UTF-8 編碼讀取
try:
read_csv(file_path, 'utf-8')
except Exception as e:
print(f"讀取文件時(shí)發(fā)生錯誤: {e}")
except Exception as e:
print(f"讀取文件時(shí)發(fā)生錯誤: {e}")
4、完整代碼
# -*- coding: UTF-8 -*-
'''
@Project :測試
@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:
# 如果檢測到的編碼格式讀取失敗,嘗試使用 UTF-8 編碼讀取
try:
read_csv(file_path, 'utf-8')
except Exception as e:
print(f"讀取文件時(shí)發(fā)生錯誤: {e}")
except Exception as e:
print(f"讀取文件時(shí)發(fā)生錯誤: {e}")
if __name__ == "__main__":
main()到此這篇關(guān)于Python如何實(shí)現(xiàn)讀取csv文件時(shí)忽略文件的編碼格式的文章就介紹到這了,更多相關(guān)Python讀取csv內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python實(shí)現(xiàn)CSF地面點(diǎn)濾波算法原理解析
這篇文章主要介紹了python實(shí)現(xiàn)CSF地面點(diǎn)濾波算法原理,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-08-08
Python抓取數(shù)據(jù)到可視化全流程的實(shí)現(xiàn)過程
這篇文章主要介紹了Python抓取數(shù)據(jù)到可視化全流程的實(shí)現(xiàn)過程,2022-01-01
Python中讓MySQL查詢結(jié)果返回字典類型的方法
這篇文章主要介紹了Python中讓MySQL查詢結(jié)果返回字典類型的方法,默認(rèn)情況下Mysql返回的是元組類型,本文實(shí)現(xiàn)了返回字典類型,需要的朋友可以參考下2014-08-08

