支持引号的XML转义字符串的静态python方法

Nik*_*as9 3 python xml lxml

我有一个字符串,其中包含XML转义字符和非转义字符,我需要它是100%XML有效,例如:

>>> s = '< &lt;'
Run Code Online (Sandbox Code Playgroud)

我希望这是:

>>> s = '&lt; &lt;'
Run Code Online (Sandbox Code Playgroud)

我尝试了很多方法,lxml,cgi等..但是他们都希望输入字符串不具有任何有效的XML字符:

>>> import cgi
>>> cgi.escape("< &lt;")
'&lt; &amp;lt;'
Run Code Online (Sandbox Code Playgroud)

要么

>>> from xml.sax.saxutils import escape
>>> escape("< &lt;")
'&lt; &amp;lt;'
Run Code Online (Sandbox Code Playgroud)

对此已经没有标准方法吗?

有人必须有同样的问题:)

Mar*_*ers 5

你最好的选择是unescape,然后重新逃脱:

>>> from xml.sax.saxutils import escape, unescape
>>> unescape("< &lt;")
'< <'
>>> escape(unescape("< &lt;"))
'&lt; &lt;'
Run Code Online (Sandbox Code Playgroud)