0

非常に大きな XML ファイルを解析し、小文字を使用して句読点を削除しようとしています。問題は、for big files を使用してこのファイルを解析しようとするとcET parse function、ある時点で不適切な形式のタグまたは文字が発生することsyntax errorです。

SyntaxError: not well-formed (invalid token): line 639337, column 4

注: ファイルを読み取ることはほぼ不可能なので、どこに問題があるのか​​わかりません。

これをスキップまたは修正するにはどうすればよいですか?

from xml.etree import cElementTree as cET

for event, elem in cET.iterparse(xmlFile, events=("start", "end")):
    ...do something...
4

2 に答える 2

4

lxml標準ライブラリの代わりに使用しますElementTree; 同じAPIをサポートしますが、壊れたXMLを処理できます。可能であれば、修復を試みます。

parser = etree.XMLParser(recover=True)
context = etree.iterparse(filename, parser)
于 2012-10-14T13:41:58.980 に答える
0

xmllintXML を検証して消去するようなツールを使用できます。このツールによって報告されたエラーは、XML ファイルの修正に役立ちます。

編集:例:

$ cat invalid.xml 
<?xml version="1.0"?>
<foo>
<bar>
</foo>
$ xmllint invalid.xml 
invalid.xml:4: parser error : Opening and ending tag mismatch: bar line 3 and foo
</foo>
      ^
invalid.xml:5: parser error : Premature end of data in tag foo line 2

^
于 2012-10-14T13:30:43.353 に答える