我有一個包含阿拉伯資料的 .CSV 檔案,我需要使用 python 和 pandas 在 jupyter 中查看這個檔案。但是我的編碼有問題我該怎么辦?請問有什么想法嗎? 這是我的代碼
這就是錯誤
uj5u.com熱心網友回復:
您可能需要保存此鏈接中提到的原始 CSV 檔案 帶有阿拉伯字符的 CSV 檔案在 Excel 中顯示為符號
uj5u.com熱心網友回復:
我以前從未遇到過這樣的問題,但似乎是解碼的問題。檢查這個問題,它可能會有所幫助。
您始終可以做的是檢查檔案的編碼;也許是別的東西而不是'utf-8'。以下代碼將幫助您執行此操作:
from bs4 import UnicodeDammit
filename="absolute_path_of_your_file"
with open(filename, "rb") as file:
content = file.read()
suggestion = UnicodeDammit(content)
suggestion.original_encoding
輸出將是您檔案的編碼。我希望它有所幫助,并且我已經正確理解了您的問題。
uj5u.com熱心網友回復:
鑒于解碼器在字符 15 處失敗,我想知道您的檔案是否正確編碼為 UTF-8,但隨后有一些不正確編碼的位元組。
當一個程式不正確地處理右單引號并撰寫了一些損壞的 UTF-8 時,我自己正在處理這個問題。直到我通過 Python 中的一個行程運行它并得到一個類似于你的錯誤時,我才知道這一點:
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xd5 in position 16: invalid continuation byte
這是我從 VSCode 復制的錯誤文本:
Community Member?s monthly
所以 VSCode 和 Python 無法理解它。但其他一切顯然都很好。
這是一個小型測驗,您可以在輸入檔案上運行,以查看前 15 個左右的字符是否正確編碼為 UTF-8。它使用增量解碼器逐位元組構建 Unicode 字符。
s以 None 開始,然后當傳入足夠的有效位元組時,解碼器回傳完整字符,buffer跟蹤已讀取但未解碼的位元組:
decoder = codecs.getincrementaldecoder("utf-8")()
with open("bad.txt", "rb") as f:
s = None
start = 0
b = f.read(1)
buffer = [b]
while b:
try:
s = decoder.decode(b, final=False)
except UnicodeDecodeError:
print(f"{start}-{start len(buffer)}: error, could not decode byte(s) {buffer}")
sys.exit(1)
if s:
print(f"{start}-{start len(buffer)}: {s}")
start = len(buffer)
buffer = []
b = f.read(1)
buffer.append(b)
當我在之前包含的示例文本上運行它時,我得到:
0-1: C
1-2: o
2-3: m
3-4: m
4-5: u
5-6: n
6-7: i
7-8: t
8-9: y
9-10:
10-11: M
11-12: e
12-13: m
13-14: b
14-15: e
15-16: r
16-18: error, could not decode byte(s) [b'\xd5', b's']
如果您確實在錯誤之前看到有效的阿拉伯語文本,那么您需要手動提取錯誤字符并重試。或者,找到源代碼,看看是否可以正確重新編碼。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/471455.html
