Я пытаюсь разобрать XML файл, содержащий более 2 ГБ с помощью библиотеки LXML Python. К сожалению, в XML файле нет строки, указывающей кодировку символов, поэтому я должен ее вручную установить. Хотя итерация через файл, хотя есть еще некоторые странные символы, которые появляются время от времени.
Я не уверен, как определить кодировку символов в строке, но, кроме того, lxml поднимет XMLSyntaxError из области цикла for. Как я могу правильно поймать эту ошибку и правильно ее решить? Здесь приведен упрощенный фрагмент кода:
from lxml import etree
etparse = etree.iterparse(file("my_file.xml", 'r'), events=("start",), encoding="CP1252")
for event, elem in etparse:
if elem.tag == "product":
print "Found the product!"
elem.clear()
В результате создается ошибка:
XMLSyntaxError: PCDATA invalid Char value 31, line 1565367, column 50
Эта строка файла выглядит следующим образом:
% sed -n "1565367 p" my_file.xml
<romance_copy>Ravioli Florentine. Tender Ravioli Filled With Creamy Ricotta Cheese And
Заполненный "F" на самом деле выглядит в моем терминале: