【发布时间】:2021-12-26 04:30:38
【问题描述】:
我有一行html格式如下:
<ol class="X5LH0c"><li class="TrT0Xe" id="hello">Create A Bakery Business Plan. ... </li><li class="TrT0Xe" id="hello">Choose A Location For Your Bakery Business. ... </li><li class="TrT0Xe">Get All Licenses Required To Open A Bakery Business In India. ... </li><li class="TrT0Xe">Get Manpower Required To Open A Bakery. ... </li><li class="TrT0Xe">Buy Equipment Needed To Start A Bakery Business.</li></ol>
HTML 代码将具有未指定的属性 class 和 id。关闭 HTML 代码时,我需要逐行添加“\n”。 我在 Python 中的代码是这样的:
TAGS = ['p', 'h1', 'h2', 'h3', 'h4', 'li', 'img','ol']
SINGLE_LINE_TAGS = ['ul', 'ol']
INLINE_TAGS = ['strong', 'i', 'u', 'em']
html = '''<ol class="X5LH0c"><li class="TrT0Xe" id="hello">Create A Bakery Business Plan. ... </li><li class="TrT0Xe" id="hello">Choose A Location For Your Bakery Business. ... </li><li class="TrT0Xe">Get All Licenses Required To Open A Bakery Business In India. ... </li><li class="TrT0Xe">Get Manpower Required To Open A Bakery. ... </li><li class="TrT0Xe">Buy Equipment Needed To Start A Bakery Business.</li></ol>'''
for tag in TAGS:
html = html.replace('</{}>'.format(tag), '</{}>\n'.format(tag))
for tag in SINGLE_LINE_TAGS:
html = html.replace('<{}>'.format(tag), '<{}>\n'.format(tag))
html = html.replace('</{}>'.format(tag), '</{}>\n'.format(tag))
html = html.replace(' />', ' />\n')
print(html)
但结果是:
<ol class="X5LH0c"><li class="TrT0Xe" id="hello">Create A Bakery Business Plan. ... </li>
<li class="TrT0Xe" id="hello">Choose A Location For Your Bakery Business. ... </li>
<li class="TrT0Xe">Get All Licenses Required To Open A Bakery Business In India. ... </li>
<li class="TrT0Xe">Get Manpower Required To Open A Bakery. ... </li>
<li class="TrT0Xe">Buy Equipment Needed To Start A Bakery Business.</li>
</ol>
为什么不是这个:
<ol class="X5LH0c">
<li class="TrT0Xe" id="hello">Create A Bakery Business Plan. ... </li>
<li class="TrT0Xe" id="hello">Choose A Location For Your Bakery Business. ... </li>
<li class="TrT0Xe">Get All Licenses Required To Open A Bakery Business In India. ... </li>
<li class="TrT0Xe">Get Manpower Required To Open A Bakery. ... </li>
<li class="TrT0Xe">Buy Equipment Needed To Start A Bakery Business.</li>
</ol>
我不使用正则表达式。谁能帮我修复代码?感谢您的支持!
【问题讨论】:
-
你正在替换
<ol>,但你有<ol class="X5LH0c"> -
首先,你为什么要这样做? HTML 不应该被漂亮地打印出来,因为它旨在由您的浏览器解析,而不是由您解析。其次,“
- ” 与您的任何标签名称都不匹配,因为它有一个属性。您必须使用 something like 正则表达式来解决问题,但即使它们也不是一个完美的工具。考虑学习 BeautifulSoup。
-
正则表达式甚至不是正确的工具,更不用说完美的处理HTML的工具了。
-
“HTML 代码将具有未指定的属性类和 id。”是什么意思?给定的代码清楚地指定了它们。
-
感谢大家的帮助!我将尝试使用正则表达式和 BeautifulSoup。感谢 Maurice Meyer、DYZ、chepner 和 The_spider。
标签: python html python-3.x string replace