![](/img/trans.png)
[英]UnicodeDecodeError: charmap' codec can't decode byte 0x8f in position 756
[英]UnicodeDecodeError: 'charmap' codec can't decode byte 0x8f in position 591: character maps to <undefined>
我有一個將docx文件轉換為純文本的代碼:
import docx
import glob
def getText(filename):
doc = docx.Document(filename)
fullText = []
for para in doc.paragraphs:
fullText.append(para.text)
return '\n'.join(fullText)
for file in glob.glob('*.docx'):
outfile = open(file.replace('.docx', '-out.txt'), 'w', encoding='utf8')
for line in open(file):
print(getText(filename), end='', file=outfile)
outfile.close()
但是,當我執行它時,出現以下錯誤:
Traceback (most recent call last):
File "C:\Users\User\Desktop\add spaces docx\converting docx to pure text.py", line 16, in <module>
for line in open(file):
File "C:\Users\User\AppData\Local\Programs\Python\Python35-32\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 0x8f in position 591: character maps to <undefined>
我正在使用Python 3.5.2。
誰能幫助解決這個問題?
提前致謝。
盡管我不太了解docx模塊,但我認為可以找到解決方案。
根據文件格式 , Unicode字符8f (charmap編解碼器無法解碼,導致UnicodeDecodeError )是控制字符 。
您應該意識到,在讀取文件時 (docx模塊正在做的事情就是這種情況),您應該知道控制字符,因為有時Python無法對其進行解碼。
解決方案是放棄docx模塊,了解.docx文件的工作方式和格式,並在讀取docx文件時使用open(filename, "rb")
以便Python能夠對其進行解碼。
但是,這可能不是問題。 如您所見,在目錄編碼中,它使用cp1512作為其編碼(默認),而不是utf-8。 嘗試將其更改為utf_8.py(對我來說,它顯示為utf_8.pyc)。
注意:很抱歉缺少鏈接。 這是因為我的信譽不高於10(因為我是Stack Overflow的新手)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.