我有这个部分 XML
string = '''
<x:root>
<x:tag1 x:anyAttrib="anyValue" x:anyAttrib="anyValue" x:anyAttrib="anyValue" />
<x:tag2 x:anyAttrib="anyValue" x:anyAttrib="anyValue" x:anyAttrib="anyValue">
someValue
</x:tag2>
<x:tag3> someValue
'''
现在我想“傻傻地”修复一下。 我想到了一种方法 - 对所有开始元素和结束元素进行正则表达式 --> 检查缺少哪个元素并添加它。当然,不要涉及太多细节。 到目前为止我得到的是(这不起作用):
import re
starts = re.compile('(?<=<)x:\w+(?=>)|(?<=<)x:\w+(?! .+ />)')
print(start.findall(string))
我期望的是 x:root 、 x:tag2 、 x:tag3 的列表
我一直在谷歌上搜索并尝试了很多,但找不到答案。 我从这个表达式中得到的唯一东西是 x:root 、 x:tag1 、 x:tag3。
请帮忙
谢谢
最佳答案
BeautifulSoup也许能够修复它:
import BeautifulSoup
content = '''
<x:root>
<x:tag1 x:anyAttrib="anyValue" x:anyAttrib="anyValue" x:anyAttrib="anyValue" />
<x:tag2 x:anyAttrib="anyValue" x:anyAttrib="anyValue" x:anyAttrib="anyValue">
someValue
</x:tag2>
<x:tag3> someValue
'''
soup = BeautifulSoup.BeautifulStoneSoup(content)
print(soup.prettify())
产量
<x:root>
<x:tag1 x:anyattrib="anyValue" x:anyattrib="anyValue" x:anyattrib="anyValue">
<x:tag2 x:anyattrib="anyValue" x:anyattrib="anyValue" x:anyattrib="anyValue">
someValue
</x:tag2>
<x:tag3>
someValue
</x:tag3>
</x:tag1>
</x:root>
关于使用正则表达式的 Python XML 重建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13077638/