Ошибка синтаксического анализа файла Docx (xml) в кодеке ‘charmap’ Python не удается декодировать байт 0x98 в позиции 7618: отображение символов на

#python #encoding #utf-8 #lxml #decoding

#python #кодирование #utf-8 #lxml #декодирование

Вопрос:

я пытаюсь проанализировать файл docx. Сначала я разархивировал его, затем попытался прочитать Document.xml файл с with open(..) и его ошибка, связанная с тем, что «кодек ‘charmap’ не может декодировать байт 0x98 в позиции 7618: сопоставление символов «. XML имеет кодировку «UTF-8»:

введите описание изображения здесь

Ошибка:

введите описание изображения здесь

Я написал следующий код:

         with open(self.tempDir   self.CONFIG['main_xml']) as xml_file:
            self.dom_xml = etree.parse(xml_file)
  

Я попытался принудительно закодировать в UTF-8, но тогда я не могу правильно читать etree.fromstring(..)

символ 7618 (из ошибки) равен : введите описание изображения здесь

Пожалуйста, помогите мне. Как правильно прочитать XML-файл? Спасибо

Комментарии:

1. Можете ли вы поделиться этим XML?

2. with open(<name of xml file>, encoding='utf-8') as xml_file

3. @Alderven, да, конечно, эта ссылка на файл .docx с диска.google: drive.google.com/file/d/1fvmyiJz0WMM-E-X3LP6Raw5B2-_Udw38 /…

4. @snakecharmerb , я пытался сделать это так, но, как я уже говорил, xml_file становится недействительным

Ответ №1:

Это работает без ошибок в вашем файле:

 import zipfile
import xml.etree.ElementTree as ET

zipfile.ZipFile('file.docx').extractall()
root = ET.parse('word/document.xml').getroot()
  

Комментарии:

1. Да, это работает, но я не понимаю, почему он выходит из строя при использовании lxml и with open() . В любом случае, большое спасибо )