摘要:之前在寫一個簡單的分班程序的時候,使用如下命令行讀取文件出現了報錯含義為程序由于文件編碼問題無法讀取文件。該行聲明了該程序讀取文件的編碼格式為。如仍報錯,可使用方法二解決。第二種使用命令,修改后文件出現亂碼。
注:該文章基于mac環境。
之前在寫一個簡單的分班程序的時候,使用如下命令行讀取csv文件,
with open("city.csv") as f: lines = f.readlines()
出現了報錯:
‘utf-8’ codec can’t decode byte 0xb1 in position 0: invalid start byte
含義為程序由于文件編碼問題無法讀取文件。查找了一些解決方法后終于解決,稍稍總結。
出現此種問題的原因,可能來自python程序本身或文件。一是python文件可能沒有聲明讀取文件的編碼方式,導致程序無法讀取,對應解決方法一;二是文件本身的編碼不是utf-8格式,導致程序無法讀取,對應解決方法二。
解決方法一:在python文件中加入編碼方式聲明在python文件開頭加入一行編碼方式聲明代碼,使用# -*- coding: utf-8 -*-或#code=utf-8均可。該行聲明了該python程序讀取文件的編碼格式為utf-8。
如果是由于python程序出現的問題,此時再次運行程序,應不再報錯。如仍報錯,可使用方法二解決。
解決方法二:修改文件編碼方式/修改程序讀取方式假設文件存放路徑為/Desktop/system_code/city.csv。打開終端(在應用程序搜索“terminal”),使用cd命令查看system_code文件夾并使用vim命令打開city.csv, 代碼如下:
$ cd Desktop/system_code/ $ vim city.csv
此時終端會顯示文件詳細內容。之后使用:set命令查看文件詳情:
可以看到第4行中fileencoding=latin1,說明此時文件編碼方式為latin1而非utf-8。
1.修改程序讀取文件時的編碼方式
如果只需要程序適應這一個文件的話,直接修改程序讀取文件的編碼方式即可,如下。
with open("city.csv", encoding="latin1") as f: lines = f.readlines()
2.修改文件編碼
有的時候程序需要讀取多個文件,而對文件本身就要求為utf-8的格式,這時候就只能修改文件編碼了。
之前在查找解決方式的時候看到了兩種,第一種使用iconv命令,修改成功。第二種使用vim命令,修改后文件出現亂碼。這里將兩種都列出。
2.1 使用iconv命令修改
命令為:
iconv -f gbk -t utf-8 origfilename > resultfilename
其中,-f后為源文件編碼,-t后為轉換后文件編碼,origfilename為需要轉碼的文件,resultfilename為保存至的文件。之前我嘗試了使用latin1進行轉碼,發現轉出后為亂碼,使用gbk則成功,不知道是不是因為文件內容為中文。
以我的文件為例,需要轉碼的文件為city_latin.csv, 希望將轉碼后文件保存為city_new.csv,則使用如下命令:
iconv -f gbk -t utf-8 city_latin.csv > city_new.csv
之后使用vim命令查看city_new.csv的編碼可看到city_new.csv為正常的utf-8編碼文件。
2.2 使用vim命令修改
注:此方式在我的電腦中轉換出現亂碼,因此不推薦。
:set fileencoding=utf-8
之后再次使用:set命令查看文件格式,可發現文件的編碼格式已經被修改為utf-8:
最后使用:wq命令寫入文件并退出vim即可。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/42638.html
摘要:如果該文件已存在,文件指針將會放在文件的結尾。運行結果以上是讀取文件的方法。為了輸出中文,我們還需要指定一個參數為,另外規定文件輸出的編碼。 上一篇文章:Python3網絡爬蟲實戰---30、解析庫的使用:PyQuery下一篇文章:Python3網絡爬蟲實戰---32、數據存儲:關系型數據庫存儲:MySQL 我們用解析器解析出數據之后,接下來的一步就是對數據進行存儲了,保存的形式可以...
csv文件其實就是單純的儲存文本數據的一種形式,那么,在日常的辦公當中,要怎么做去提高其辦公的效率呢?比如,如何使用Python去批量的進行處理文件,批量的處理csv文件,怎么將編碼轉換成為YTF-8的形式呢?下面給大家詳細的解答下?! ‘斘覀冇胮andas是操作CSV文件的時候,常常會因為編碼問題出現報錯?! andas_libsparsers.pyx in pandas._libs.pa...
閱讀 2405·2021-11-18 10:02
閱讀 1922·2021-10-13 09:40
閱讀 2999·2021-09-07 10:07
閱讀 2105·2021-09-04 16:48
閱讀 1005·2019-08-30 13:18
閱讀 2451·2019-08-29 14:03
閱讀 2921·2019-08-29 12:54
閱讀 3155·2019-08-26 11:41