如何保留“和使用bs4 python解析xml时
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了如何保留“和使用bs4 python解析xml时,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2066字,纯文字阅读大概需要3分钟。
内容图文
我使用bs4解析xml文件,然后再将其写回新的xml文件.
输入文件:
<tag1>
<tag2 attr1="a1">" example text "</tag2>
<tag3>
<tag4 attr2="a2">" example text "</tag4>
<tag5>
<tag6 attr3="a3">' example text '</tag6>
</tag5>
</tag3>
</tag1>
脚本:
soup = BeautifulSoup(open("input.xml"), "xml")
f = open("output.xml", "w")
f.write(soup.encode(formatter='minimal'))
f.close()
输出:
<tag1>
<tag2 attr1="a1"> " example text " </tag2>
<tag3>
<tag4 attr2="a2"> " example text " </tag4>
<tag5>
<tag6 attr3="a3"> ' example text ' </tag6>
</tag5>
</tag3>
</tag1>
我想保留& quot;和& .我尝试使用编码格式化程序的所有选项 – Minimal,xml,html,none.但他们都没有解决这个问题.
然后我尝试手动替换“with& quot;”.
for tag in soup.find_all(text=re.compile("\"")):
res = tag.string
res1 = res.replace("\"",""")
tag.string.replaceWith(res1)
但这给出了以下输出
<tag1>
<tag2 attr1="a1"> &quot; example text &quot; </tag2>
<tag3>
<tag4 attr2="a2"> &quot; example text &quot; </tag4>
<tag5>
<tag6 attr3="a3"> ' example text ' </tag6>
</tag5>
</tag3>
</tag1>
它取代了&与& amp; amp; .我在这里很困惑.请帮我解决这个问题.
解决方法:
自定义编码&输出格式
您可以使用custom formatter function将这些特定实体添加到实体替换中.
from bs4 import BeautifulSoup
from bs4.dammit import EntitySubstitution
def custom_formatter(string):
"""add " and ' to entity substitution"""
return EntitySubstitution.substitute_html(string).replace('"','"').replace("'",''')
input_file = '''<tag1>
<tag2 attr1="a1">" example text "</tag2>
<tag3>
<tag4 attr2="a2">" example text "</tag4>
<tag5>
<tag6 attr3="a3">' example text '</tag6>
</tag5>
</tag3>
</tag1>
'''
soup = BeautifulSoup(input_file, "xml")
print soup.encode(formatter=custom_formatter)
<?xml version="1.0" encoding="utf-8"?>
<tag1>
<tag2 attr1="a1">" example text "</tag2>
<tag3>
<tag4 attr2="a2">" example text "</tag4>
<tag5>
<tag6 attr3="a3">' example text '</tag6>
</tag5>
</tag3>
</tag1>
诀窍是在EntitySubstitution.substitute_html()之后执行此操作,因此您的& s不会替换为& amp; s.
内容总结
以上是互联网集市为您收集整理的如何保留“和使用bs4 python解析xml时全部内容,希望文章能够帮你解决如何保留“和使用bs4 python解析xml时所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。