【发布时间】:2016-09-18 10:19:02
【问题描述】:
lxml.etree.parse() 在 utf-16 文件中生成字符串为 xxx;我怎样才能把它转换回来?
在网络浏览器中打开输出文件很好。但是我仍然需要输出文件中的常规字符串。
示例文件:
<?xml version="1.0" encoding="UTF-16"?>
<?xml-stylesheet type="text/xsl" href="xxx.xsl"?>
<TEI.2>
<teiHeader></teiHeader>
<text>
<front></front>
<body>
<p rend="chapter">อธิกรณปจฺจยกถาวณฺณนา</p>
<p rend="bodytext" n="285"><hi rend="paranum">๒๘๕</hi><hi rend="dot">.</hi> <hi rend="bold">วิวาทาธิกรณมฺหา</hi>ติ ‘‘อธมฺมํ ‘ธโมฺม’ติ ทีเปตี’’ติอาทินยปฺปวตฺตา อฎฺฐารสเภทกรวตฺถุนิสฺสิตา วิวาทาธิกรณมฺหาฯ</p>
</body>
<back></back>
</text>
</TEI.2>
代码:
#coding:utf8
import lxml.etree as ET
xml_filename="example.xml"
dom = ET.parse(xml_filename)
print ET.tostring(dom, pretty_print=True))
示例输出:
<?xml-stylesheet type="text/xsl" href="xxx.xsl"?><TEI.2>
<teiHeader/>
<text>
<front/>
<body>
<p rend="chapter">ทุกมาติกาปทวณฺณนา</p>
</body>
<back/>
</text>
</TEI.2>
【问题讨论】:
-
你的代码没有运行,我看不到你在哪里定义
xslt和newdom -
对不起。我已经编辑了。
-
现在我使用了stackoverflow.com/a/12614706/3529093,但出现错误:UnicodeEncodeError: 'ascii' codec can't encode characters in position 125-141: ordinal not in range(128)
标签: python html xml character-encoding lxml