python 寫入檔案時,報錯:UnicodeEncodeError: 'gbk' codec can't encode character '\xa0' in position 1806: ille
阿新 • • 發佈:2019-02-18
最近用到python 爬取智聯招聘上的網頁,想把頁面儲存本地:
def writeintofile(filename, str):
# 開啟檔案
fo = open(filename, 'w') # 寫的方式開啟檔案
print("檔名: ", fo.name)
# 在檔案末尾寫入一行
fo.write(str)
# 關閉檔案
fo.close()
報出錯誤:UnicodeEncodeError: ‘gbk’ codec can’t encode character ‘\xa0’ in position 1806: illegal multibyte sequence
原因如下:
1.‘gbk’ codec can’t encode character :說明是將Unicode字元編碼為GBK時候出現了問題,可能是本身Unicode型別的字元中,包含了一些無法轉換為GBK編碼的一些字元;
2.gbk無法轉換’\xa0’字元,所以在轉換前需要將“\xa0”替換掉;使用string.replace(u’\xa0’, u’ ‘);
因此,我們使用:
fo.write(str.replace(u'\xa0', u''))
即可解決問題;
另外一種解決辦法,在gbk解碼時忽略掉不能解碼的資料:
fo.write(content.encode("gbk", 'ignore').decode("gbk", "ignore"))
或者採用如下方式:
fo = open(filename, 'w', encoding="utf-8")
fo.write(str)
三種解決方法都成功。