gpt4 book ai didi

python - 在 Python 中清理损坏的 XML

转载 作者:行者123 更新时间:2023-11-30 22:49:32 24 4
gpt4 key购买 nike

我无法控制的服务器发送了损坏的 XML,其属性和文本中包含“>”、“&”、“<”等字符。

小样本:

<StockFormula Description="" Name="F_ΔTURN" RankType="Higher" Scope="Universe" Weight="10.86%">
<Formula>AstTurnTTM>AstTurnPTM</Formula>
</StockFormula>
<Composite Name="Piotroski & Trends - <11@4w600k 70b" Weight="0%" RankType="Higher">
</Composite>

我决定使用 lxml 模块,因为它区分大小写,速度非常快并且可以完成工作。

我该如何修复这种类型的 XML?基本上,我试图用正确的转义序列替换所有出现的无效字符。

import re

broken = '<StockFormula Description="" Name="F_ΔTURN" RankType="Higher" Scope="Universe" Weight="10.86%">\n<Formula>AstTurnTTM>AstTurnPTM</Formula>\n<Composite Name="Piotroski & Trends - <11@4w600k 70b" Weight="0%" RankType="Higher">\n</Composite>'
print re.sub(r'(.*Name=".*)&(")', r'\g<1>&gt;\g<2>', broken)

输出:

<StockFormula Description="" Name="F_ÃŽâ€TURN" RankType="Higher" Scope="Universe" Weight="10.86%">
<Formula>AstTurnTTM>AstTurnPTM</Formula>
</StockFormula>
<Composite Name="Piotroski & Trends - <11@4w600k 70b" Weight="0%" RankType="Higher">
</Composite>

最佳答案

首先,要认识到没有任何 XML 解析器可以帮助您处理“损坏的 XML”。 XML 解析器仅对 XML 进行操作,根据定义,XML 必须是 well-formed

其次,一般情况下不可能修复“损坏的 XML”。没有管理“损坏的 XML”的规则。如果没有明确定义“损坏的 XML”,就无法保证您能够处理它并将其转换为真正的 XML。

也就是说,HTML Tidy在修复 (X)HTML 方面做得不错,但修复 XML 的能力也很有限。这是自动修复“损坏的 XML”的最佳选择。有一个Python包,PyTidyLib ,它包装了 HTML Tidy 库。

关于python - 在 Python 中清理损坏的 XML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39736276/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com