我得到了我想转换回原始的未加密的&#xxx;
字符
让我们执行一个简单的XSL转换,它对俄语字符不做任何操作(输出=输入):
input.xml
是:
<root>Здраве</root>
transform.xsl
是:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
以下是我的python代码:
import lxml.etree as ET
dom = ET.parse("input.xml")
xslt = ET.parse("transform.xsl")
transform = ET.XSLT(xslt)
newdom = transform(dom)
print(ET.tostring(newdom, pretty_print=True))
输出为:
b'<root>Здраве</root>\n'
演示:https://repl.it/join/lktibwya-vincentandrieu
我的问题是我需要将其保存到一个文件中,该文件的内容为Здраве
,而不是Здраве
如何将特殊字符转换为其正常表示
基本上,#1088这里
1088
是Unicode代码点。在python中,可以通过chr(integer value of Unicode code point)
将Unicode代码点转换为实际表示形式前面的
b'<root...
表示它是binary
。所以我们需要使用.decode()
将其转换为string
最后,我们可以使用
regular expression
通过-&#(\d{4});
&#
:将匹配以&#
(
)
:捕获组\d{4}
:选择长度为4的数字;
:以;
结尾
您可以使用html模块:
如果您正在接收字节,则需要首先将它们转换为字符串:
您也可以尝试在对ET.tostring的调用中使用
encoding='unicode'
。它应该直接返回Python字符串,因为Python在内部对字符串使用unicode:相关问题 更多 >
编程相关推荐