首页 > 解决方案 > Python 用 & 替换 &

问题描述

&我想用&xml obj 中的python 正则表达式替换。但不能更换<>

例子:

dataobj = '<Style width="100.000000%"/><Data&><![CDATA[<p>TEST TEST &lt; TEST 10&gt; starts &" and T&L'

我的预期输出应该是

outputdata = '<Style width="100.000000%"/><Data&amp;><![CDATA[<p>TEST TEST &lt; TEST 10&gt; starts &amp;" and T&amp;L'

我可以严格地说 for&lt; &gt; &eq; &in; &amp;不应该改变任何东西。我发现的地方&应该替换为&amp;但不是&lt; &gt; &eq; &in; &amp;

标签: pythonregexxml

解决方案


我认为负面的前瞻可能就足够了,尽管根据具体的用例,XML 解析器可能会更好:

import re
dataobj = '<Style width="100.000000%"/><Data&><![CDATA[<p>TEST TEST &lt; TEST 10&gt; starts &" and T&L'

amp = re.compile(r'&(?![lg]t;)')
print(re.sub(amp,'&amp;',dataobj))

生产

<Style width="100.000000%"/><Data&amp;><![CDATA[<p>TEST TEST &lt; TEST 10&gt; starts &amp;" and T&amp;L

推荐阅读