gpt4 book ai didi

python - 如何将 ElementTree 保存为 UTF-16

转载 作者:太空宇宙 更新时间:2023-11-04 10:57:09 25 4
gpt4 key购买 nike

我正在尝试使用 cElementTree 保存编码为 UTF-16 的 XML 文件。这是同一个项目,但不同于以下 DOCTYPE 问题:How to create <!DOCTYPE> with Python's cElementTree

我了解到,如果我没有在字符串中声明编码,cElementTree 会添加它。所以,代码是这样的:

import xml.etree.cElementTree as ElementTree
from StringIO import StringIO
s = '<?xml version=\"1.0\" ?><!DOCTYPE tmx SYSTEM \"tmx14a.dtd\" ><tmx version=\"1.4a\" />'
tree = ElementTree.parse(StringIO(s)).getroot()
header = ElementTree.SubElement(tree,'header',{'adminlang': 'EN',})
body = ElementTree.SubElement(tree,'body')
ElementTree.ElementTree(tree).write('myfile.tmx','UTF-16')

当我用 UTF-8 编写文件时,一切都很好。但是,当我更改为 UTF-16 时,文本编码已损坏。它还缺少所需的字节顺序标记。当我尝试将 BOM 添加到字符串的开头时,

s = '\xFF\xFE<?xml version=\"1.0\"......

ElementTree 报告错误“第 1 行第 1 列格式不正确(无效标记)”。

所有缓冲区都是unicode数据。如何保存到 UTF-16 XML 文件?

最佳答案

resultstring = ElementTree.tostring(tree, encoding='utf-16')

附言由于 ElementTree 模块的接口(interface)被 lxml 库复制,将 ElementTree 导入为 etree 是个好主意。这将允许减少更改,以防您需要更强大的 lxml 功能。

关于python - 如何将 ElementTree 保存为 UTF-16,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8868517/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com