我需要使用Python讀取csv文件的內容。然而,當我運行此代碼:如何解決編碼問題?
with(open(self.path, 'r')) as csv_file:
csv_reader = csv.reader(csv_file, dialect=csv.excel, delimiter=';')
self.data = [[cell for cell in row] for row in csv_reader]
我得到這個錯誤:
File "C:\Python36\lib\encodings\cp1252.py", line 23, in decode return codecs.charmap_decode(input,self.errors,decoding_table)[0]
UnicodeDecodeError: 'charmap' codec can't decode byte 0x81 in position 1137: character maps to <undefined>
我的理解是,這個文件不是在CP-1252編碼,我需要找出編碼是什麼用過的。我嘗試了一堆東西,但現在沒有任何工作。
有關文件:
- 它是由外部公司發送的,我不能有更多的相關信息。
- 它配備了其他類似的文件,與我沒有任何問題,當我運行相同的代碼
- 它有一個.xls擴展名,但與分號分隔多個csv文件
- 當我打開它在Excel中以兼容模式打開。但是我沒有看到任何類型的編碼問題:一切都顯示正確。
我已經嘗試過:
- 不同的文件格式下保存它擺脫兼容模式
在我的第一行代碼添加一個編碼的:(我試圖或多或少隨機一些編碼,我知道的)
與(開放(self.path, 'R',編碼= 'UTF8'))作爲csv_file:
將文件內容複製到新文件或刪除文件的全部內容。仍然不起作用。這真的讓我感到困惑,因爲我覺得它意味着問題不在文件的內容中,而不在文件本身中。
- 隨處搜尋如何解決這類問題。
您可以嘗試使用'pandas'或'openpyxl'讀取文件。 –
Python 2或Python 3? (可能是相關的)。 – nigel222
如果它在Excel中正確打開,請嘗試從Excel保存到另一個CSV文件。這可能會解決編碼問題,而無需查明確切的問題。或者它可能不會... – nigel222