Python 使用Beautifulsoup旋转<;ul>&书信电报;李>;并将无界项添加到列表中
我想将我的文本放在下面,并将其组合成如下所示的对象列表。我知道这可以用BeautifulSoup来完成 正在启动html文本:Python 使用Beautifulsoup旋转<;ul>&书信电报;李>;并将无界项添加到列表中,python,xml,xml-parsing,beautifulsoup,Python,Xml,Xml Parsing,Beautifulsoup,我想将我的文本放在下面,并将其组合成如下所示的对象列表。我知道这可以用BeautifulSoup来完成 正在启动html文本: input_string = "peanut butter1 <ul id="ul0002" list-style="none">peanut butter2 <li id="ul0002-0001" num="0000">2.0 to 6.0 mg of 17β-estradiol and</li>
input_string = "peanut butter1
<ul id="ul0002" list-style="none">peanut butter2
<li id="ul0002-0001" num="0000">2.0 to 6.0 mg of 17β-estradiol and</li>
<li id="ul0002-0002" num="0000">0.020 mg of ethinylestradiol;</li>
<br>
<li id="ul0002-0003" num="0000">0.25 to 0.30 mg of drospirenone and</li>peanut butter3
</ul>peanut butter4"
其思想是迭代
美化组
文本项并检查父项:
from pprint import pprint
from bs4 import BeautifulSoup
input_string = """peanut butter1
<ul id="ul0002" list-style="none">peanut butter2
<li id="ul0002-0001" num="0000">2.0 to 6.0 mg of 17β-estradiol and</li>
<li id="ul0002-0002" num="0000">0.020 mg of ethinylestradiol;</li>
<br>
<li id="ul0002-0003" num="0000">0.25 to 0.30 mg of drospirenone and</li>peanut butter3
</ul>peanut butter4"""
soup = BeautifulSoup(input_string, 'html.parser')
result = []
for item in soup.find_all(text=True):
value = item.strip()
if value:
parent = 'no tag' if item.parent.parent is None else item.parent.name
result.append([parent, value])
pprint(result)
希望能有所帮助。事实上,我昨天确实阅读了所有文档,但没有找到答案。因此,我认为可以用正则表达式来解决这个问题。当提到beautifulsoup时,我知道我不知道答案,因为我已经失败了。所以我问了这个问题。我认为SOF的目的是问这样的问题。如果不是,我们应该通读所有可用的文档并解决所有问题,那么这个网站真的没有用。
x = input_string.findAll()
list1 = []
for y in x:
list1.append([y.renderContents(), y.name])
from pprint import pprint
from bs4 import BeautifulSoup
input_string = """peanut butter1
<ul id="ul0002" list-style="none">peanut butter2
<li id="ul0002-0001" num="0000">2.0 to 6.0 mg of 17β-estradiol and</li>
<li id="ul0002-0002" num="0000">0.020 mg of ethinylestradiol;</li>
<br>
<li id="ul0002-0003" num="0000">0.25 to 0.30 mg of drospirenone and</li>peanut butter3
</ul>peanut butter4"""
soup = BeautifulSoup(input_string, 'html.parser')
result = []
for item in soup.find_all(text=True):
value = item.strip()
if value:
parent = 'no tag' if item.parent.parent is None else item.parent.name
result.append([parent, value])
pprint(result)
[['no tag', u'peanut butter1'],
[u'ul', u'peanut butter2'],
[u'li', u'2.0 to 6.0 mg of 17\u03b2-estradiol and'],
[u'li', u'0.020 mg of ethinylestradiol;'],
[u'li', u'0.25 to 0.30 mg of drospirenone and'],
[u'br', u'peanut butter3'],
['no tag', u'peanut butter4']]