日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

Python读取中文Excel问题解决

發布時間:2023/12/20 python 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python读取中文Excel问题解决 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Python讀取中文Excel問題解決

  • 為什么讀取中文Excel會出錯
  • 兩個難題
  • 試驗結果

為什么讀取中文Excel會出錯

在計算機中,一個字節(byte)有8個比特,即可以表達2^8次方即256個字符,一個英文字母或符號占一個字節,即ASCII碼。ASCII碼有意只編了128個。

但是這個表達對于其他語言是不夠用的,特別是東亞文字。于是上世紀八九十年代出現了很多并行的編碼表,將2個字節對應為日文、韓文、簡體或繁體漢字。Windows官方使用cp936的編碼表,相當于gb18030. 所以在Windows系統里,不論是文本內容,還是文件名,都是以它來解碼的。

這樣就造成了兩種錯誤,一是如果以ASCII碼去讀,會發生錯誤(因為還有128種字節不被ASCII定義),這就逼的程序去指定編碼表。但是依然會發生編碼表錯誤,即錯誤解碼,例如原來是日文的編碼錯解成gb18030就會出錯,形成亂碼。

后來又出現了UTF-8,用1-3個字節將所有的語言的字符都包括進來,1-3個字節是為了兼容ASCII,實際可以只用2個字節,而2個字節的是unicode,規定內存中使用。

這樣,盡管在內存中字節是通用的unicode,但是永久存儲卻有多種編碼,即便都是中文,也有cp936, gb2312, gbk, gb18030和utf-8幾種. 我忘了cp936是對應哪種gb了,但是一個割裂的后果是微軟體系只要安裝時指定簡體中文,都用cp936,而后來流行的網頁,Linux及新興語言,特別是Python都默認utf-8.

兩個難題

如上,一個是在Windows系統中運行,如果碰上中文文件名,必須用cp936或gb18030去解碼它。如果你寫了一個中文的文件名,而python根據utf-8規則去把它翻譯成字節,就會在底層的文件名上不匹配,因為該中文在cp936的規則下翻譯成另外的字節。報錯是找不到該文件。

我參照了很多網上內容,有以下三種解決方法,前兩種類似,是用unicode:

u'中文.xlsx' r'中文.xlsx' '中文.xlsx'.encode('cp936')

而最后一種直接指定解碼出字節。最后一種經常是失效的,而前兩種在所有的庫中都可以調用,應該是被python底層支持了。

第二個難題是讀取文件內容時正確指定編碼。如果直接用Excel編輯,或者c#之類的插件生成的一般里面的文字是cp936的,而python的各excel庫偏偏喜歡默認編碼為utf-8

一個非常簡單粗暴的辦法是在加載了相應庫之后,把Excel文件對象的encoding屬性強行從utf-8更改:
xlrd改文件內容編碼

xlrd.Book.encoding = "gbk"

這樣即使庫沒有提供改編碼接口,也實際改了。當然xlrd還提供了接口。
如果cp936的內容強行用utf-8去解,會發生報錯

UnicodeDecodeError: ‘utf-8’ codec can’t decode byte 0xce in position 64: invalid continuation byte

試驗結果

xlrd和openpyxl可以同時解決以上兩個問題, 下面是xlrd的一段代碼。

import xlrd, xlwt xlrd.Book.encoding = "cp936" exl = xlrd.open_workbook(u'上海代碼.xlsx') print("首行為\n ", exl.sheets()[0].row_values(0) )

openpyxl也可以,但是它的語法過于復雜:

# a trial to see if openpyxl works import openpyxl openpyxl.Workbook.encoding="cp936" book = openpyxl.load_workbook(u'上海代碼.xlsx') print(book.sheetnames) sheet = book.active print(sheet['A1'].value)

然后直接在cmd窗口進到相應目錄運行它(注意用vscode可能被vscode自己默認的utf-8或工作路徑污染出錯),兩個難題同時解決了

Microsoft Windows [版本 6.1.7601] 版權所有 (c) 2009 Microsoft Corporation。保留所有權利。C:\Users\Y>d:D:\>python openpyxl_.py C:\Python37-32\lib\site-packages\openpyxl\styles\stylesheet.py:214: UserWarning:Workbook contains no default style, apply openpyxl's defaultwarn("Workbook contains no default style, apply openpyxl's default") ['Sheet0'] 證券代碼D:\>

下一篇會講寫excel。我看到通用的視頻是講xlwt或openpyxl,其實這兩個都不實用。這些培訓真是誤人子弟。具體如何,下期再見。

總結

以上是生活随笔為你收集整理的Python读取中文Excel问题解决的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 97人妻精品一区二区 | 狂野欧美性猛交免费视频 | 黄色录像大片 | 亚洲 欧美 日韩 国产综合 在线 | 熟女视频一区 | 超碰97人人射妻 | 国产免费黄网站 | 黄色大片免费观看 | 日韩中文在线字幕 | 四虎成人精品永久免费av九九 | 在线人成| 久久精品在线播放 | 四虎精品一区二区 | 九色porn| 国产精品天天操 | 今天最新中文字幕mv高清 | 精品日韩在线播放 | 九一国产精品 | av老司机福利 | 修女也疯狂3免费观看完整版 | 国模私拍视频在线 | 欧美色成人 | 成人激情综合 | 中字av在线 | 久久午夜福利电影 | 精品视频专区 | 亚洲精品国产美女 | 黄色小视频在线观看免费 | 久久在线免费观看 | 精品免费| h视频免费在线观看 | jlzzzjlzzz国产免费观看 | 亚洲国产精一区二区三区性色 | 少妇野外性xx老女人野外性xx | 国产极品美女高潮无套在线观看 | 国产精品88av | 豆豆色成人网 | 精品国产欧美一区二区 | 疯狂少妇| www,四虎| 久久久免费电影 | 国产精成人品免费观看 | 日本一区不卡视频 | 草草影院发布页 | 亚洲精品tv | 久久成人亚洲 | 日韩欧美中文字幕一区二区三区 | 一区二区三区在线观看av | 色a视频| 男女啪啪无遮挡 | 美丽的姑娘在线观看 | 日韩精品一区二区在线看 | 美人被强行糟蹋np各种play | 特级西西www444人体聚色 | 免费精品在线观看 | av网站免费播放 | 亚洲综合在线一区 | av影院在线播放 | 五月激情综合婷婷 | 在线播放91 | 欧美脚交视频 | 伊人久久久久久久久久久久久 | 亚洲综合日韩精品欧美综合区 | 欧美黑人一区二区 | 可以在线观看的av网站 | 久久久久久av无码免费看大片 | 精品无码国产污污污在线观看 | 久久久国产精品视频 | 51啪影院 | 区一区二视频 | 天堂91| 人妖videosex高潮另类 | 伊人久久精品 | 亚洲欧美自拍另类 | 狠狠五月婷婷 | 日本www高清 | 强行糟蹋人妻hd中文字幕 | 久热中文 | 爱爱爱网 | 免费特级毛片 | 精品成人av一区二区在线播放 | 熟女俱乐部五十路六十路av | 国产农村乱对白刺激视频 | 男女草逼网站 | 午夜窝窝 | 国产精品69久久久久孕妇欧美 | 在线观看国产区 | 中文字幕乱妇无码av在线 | 午夜一本 | 潘金莲一级淫片aaaaaaa | 欧美成人免费一级 | 日本猛少妇色xxxxx猛叫 | 国产高潮呻吟久久 | 自拍偷拍小视频 | 一区二区三区在线看 | 黄色网免费观看 | 日韩在线精品强乱中文字幕 | 99re6在线 | 在线一区二区三区四区 |