Como devo lidar com um XMLSyntaxError no lxml do Python enquanto analisa um arquivo XML grand
Estou tentando analisar um arquivo XML com mais de 2 GB com a biblioteca lxml do Python. Infelizmente, o arquivo XML não tem uma linha informando a codificação de caracteres, então eu tenho que configurá-lo manualmente. Enquanto percorre o arquivo, ainda existem alguns caracteres estranhos que surgem de vez em quand
Não sei ao certo como determinar a codificação de caracteres da linha, mas, além disso, o lxml gerará um XMLSyntaxError do escopo do loop for. Como posso capturar esse erro corretamente e lidar com ele corretamente? Aqui está um trecho de código simplista:
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()
Isso eventualmente produz o erro:
XMLSyntaxError: PCDATA invalid Char value 31, line 1565367, column 50
Essa linha do arquivo fica assim:
% sed -n "1565367 p" my_file.xml
<romance_copy>Ravioli Florentine. Tender Ravioli Filled With Creamy Ricotta Cheese And
O 'F' de preenchido realmente se parece com isso no meu terminal: