我試圖用一些Python模塊,但它給了我下面的錯誤:的UnicodeDecodeError:「UTF-8」編解碼器不能解碼位置字節0xa9 1
UnicodeDecodeError: 'utf8' codec can't decode byte 0xa9 in position 1
我想這是因爲我的輸入文件中包含內部沒有UTF-8字符,所以我想在將它傳遞給模塊之前清理該文件。
如果我想識別非UTF-8字符並刪除它們,我該怎麼做?我嘗試了谷歌搜索,但無法找到很好的答案。
我試圖用一些Python模塊,但它給了我下面的錯誤:的UnicodeDecodeError:「UTF-8」編解碼器不能解碼位置字節0xa9 1
UnicodeDecodeError: 'utf8' codec can't decode byte 0xa9 in position 1
我想這是因爲我的輸入文件中包含內部沒有UTF-8字符,所以我想在將它傳遞給模塊之前清理該文件。
如果我想識別非UTF-8字符並刪除它們,我該怎麼做?我嘗試了谷歌搜索,但無法找到很好的答案。
您可以嘗試將文件解碼爲UTF-8,忽略任何錯誤,然後使用UTF-8對其進行重新編碼。
string.decode('utf-8', errors='ignore').encode('utf-8')
或者你可以更換一個合適的序列中的字符(這樣可以去掉),也this answer看到:
string.decode('utf-8', errors='replace').encode('utf-8')
但是,你真的應該確定哪些編碼您的數據是,並轉換它適當。 iconv
可能會有所幫助。
要麼使用上面提到的忽略錯誤選項,或者嘗試使用作爲替代方案如下:
for line in io.open("u.item", encoding="ISO-8859-1」)
大部分是我從某處分析數據的時候,它就會以這種格式,而不是UTF編碼-8。
沒有足夠的信息。你的輸入數據是什麼?它應該有一個可識別的編碼。你不應該猜測。 –
我使用名爲Apache Tika的開源提取了一堆PDF和PPT文章中的文本。 – pandagrammer
我的猜測是它的Windows代碼頁面之一,如Windows-1252。 '0xa9'將是一個版權標誌。 – roeland