python - 读取 XML 头编码

标签 python xml encoding

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

使用 this great answer 中给出的代码我可以进行转换,但如何读取 XML header 中给出的编码?

例如,我有很多文件已经是 UTF-8 格式,应该单独放置:

<?xml version="1.0" encoding="utf-8"?>

但是,我有很多确实需要转换的文件:

<?xml version="1.0" encoding="windows-1255"?>

如何在 Python 中检测这些文件的 header 中指定的 XML 编码?更好的是,在我检测并重新编码文件后,我如何才能将此 XML header 更改为读取“utf-8”以避免将来处理它?<​​/p>

最佳答案

使用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

然后您可以使用 lxml 以 UTF-8 格式再次写出文件。

关于python - 读取 XML 头编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25796238/

相关文章:

python - ISO 到日期时间对象 : 'z' is a bad directive

c++ - 如何使用 C++ 编辑 xml 文件?

json - 如何确定 JSON.stringify() 使用哪种编码?

c# - 确保导出的 JPEG 小于最大文件大小

python - Dive Into Python 过时了吗?

php - 调用mysql并打印匹配文本文件的数据(python)

Python验证函数生成IndexError : list assignment index out of range

java - 如何将图像添加到抽屉 View 的底部?

javascript - 使用 Javascript 获取 XML 文件中节点内的节点

math - 就叶子数而言,完整k元树中的节点总数是多少?