簡體   English   中英

Python無法從文本文件中讀取“-”字符

[英]Python not able to read "–" character from text file

使用 Python,我從 API 獲取一些文本數據,並在經過一些轉換后將其存儲在文本文件中,然后從不同的進程讀取此文本文件。

從 API 讀取數據時沒有問題,但在讀取文本文件時出現此錯誤:

UnicodeDecodeError: 'utf-8' codec can't decode byte 0x96 in position 907: invalid start byte

被讀取為 '0x96' 的字節實際上是 API 數據中的“-”字符,並且僅當encoding參數明確指定為'utf-8'時才會發生此錯誤。 在打開文本文件時未將encoding顯式傳遞給open函數時不會發生這種情況。

我的問題:

  1. 為什么只有在指定encoding時才會出現此錯誤? 我認為,在其他情況下我們也應該得到相同的錯誤,因為默認編碼也是“UTF-8”。 (如果我錯了,請糾正我)
  2. 是否可以在不改變我閱讀文本文件的方式的情況下解決這個問題? (即,我可以對從 API 數據創建此文本文件的階段進行任何更改嗎?)

真的很感謝你研究它。 謝謝!

open() ,默認編碼取決於平台,您可以通過檢查locale.getpreferredencoding()返回的內容來locale.getpreferredencoding()系統的默認編碼。 這是來自文檔

對於問題的第二部分,由於在未將utf-8指定為編碼時不會出現錯誤,因此您可以僅使用locale.getpreferredencoding()的輸出作為編碼方法。

如果您這樣做,您可以對文本的每一行執行此操作。 由於0x96被認為是“不可打印的”。

import re
...
line = re.sub(r'\x96',r'\x2D', line) 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM