读取XML头编码

Naf*_*Kay 4 python xml encoding

我有一些XML文件,我想用脚本处理它们,将它们从它们所处的任何编码转换为UTF-8.

使用这个伟大答案中给出的代码我可以进行转换,但是如何读取XML头中给出的编码?

例如,我有许多已经使用UTF-8的文件,应该保留下来:

<?xml version="1.0" encoding="utf-8"?>
Run Code Online (Sandbox Code Playgroud)

但是,我有很多的哪些文件中需要转换:

<?xml version="1.0" encoding="windows-1255"?>
Run Code Online (Sandbox Code Playgroud)

如何在Python中检测这些文件的标头中指定的XML编码?更好的是,在我检测并重新编码文件后,如何将此XML标头更改为"utf-8"以避免将来处理它?

Mar*_*ers 5

lxml做分析; 然后,您可以访问原始编码:

from lxml import etree

with open(filename, 'r') as xmlfile:
    tree = etree.parse(xmlfile)
    if tree.docinfo.encoding == 'utf-8':
        # already in correct encoding, abort
        return
Run Code Online (Sandbox Code Playgroud)

然后,您可以使用lxmlUTF-8再次写入文件.