我正在抓取的 Html:
<tr>
<td align="left" bgcolor="#ffff99">
<font size="2">
<a href="some/link.htm">
<b>SomeStuff</b>
</a>
</font>
</td>
</tr>
</tr>
<td align="left" bgcolor="#ffff99">
<font size="2">
<a href="some/link2.htm">
<b>SomeMoreStuff</b>
</a>
</font>
</td>
</tr>
我如何抓取信息:
my_list = []
for i in soup.find_all('a',href=re.compile('some/link')):
my_list.append(str(i.find('b')))
my_list.append(i['href'])
我需要从列表中的元素中删除 HTML 标记。
但是,当我创建循环时,它不会保存列表中的任何更改。我的列表看起来像这样:
my_list = ['<br>SomeStuff</br>','some/link.htm',
'<br>SomeMoreStuf</br>', 'some/link2.htm',
'<br>EvenMoreStuff</br>', 'some/link3.htm']
我试过这个:
for i in my_list:
i = i.replace('<br>','')
i = i.replace('</br>','')
我已经尝试过这个:
for i in my_list:
if '<br>' in i:
i = i.replace('<br>','')
if '</br> in i:
i = i.replace('</br>','')
这些都不会对原始列表进行任何更改。我可以通过不将更改存储在任何内容中来打印出我想要的更正:
for i in my_list:
i.replace('<br>','')
但是我需要将更改保存在列表中。
最佳答案
所有解决方案都有效,只是您忘记更新列表。
for i, element in enumerate(my_list):
element = element.replace('<br>','')
element = element.replace('</br>','')
my_list[i] = element
现在打印 my_list
输出:
['SomeStuff', 'some/link.htm', 'SomeMoreStuf', 'some/link2.htm', 'EvenMoreStuff', 'some/link3.htm']
您还可以使用列表理解,这将产生相同的结果:
my_list = [i.replace('<br>', '').replace('</br>', '') for i in my_list]
关于python - 如何使用 Python 从列表中的项目中删除 <br> 和 </br> 标签?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43024953/