支持引号的静态Python方法进行XML转义字符串

4 投票
1 回答
3693 浏览
提问于 2025-04-18 16:51

我有一个字符串,里面既有经过XML转义的字符,也有没有转义的字符,我需要它完全符合XML的标准,比如:

>>> s = '< &lt;'

我想要的结果是:

>>> s = '&lt; &lt;'

我尝试过很多方法,比如用lxml、cgi等等,但它们都要求输入的字符串里不能已经有有效的XML字符:

>>> import cgi
>>> cgi.escape("< &lt;")
'&lt; &amp;lt;'

或者

>>> from xml.sax.saxutils import escape
>>> escape("< &lt;")
'&lt; &amp;lt;'

难道没有一个标准的方法可以解决这个问题吗?

肯定有人遇到过同样的问题 :)

1 个回答

7

你最好的办法是先解码,然后再编码:

>>> from xml.sax.saxutils import escape, unescape
>>> unescape("< &lt;")
'< <'
>>> escape(unescape("< &lt;"))
'&lt; &lt;'

撰写回答