如何删除<;br>;及</br>;使用Python从列表中的项目中添加标记?
我从中抓取的Html:如何删除<;br>;及</br>;使用Python从列表中的项目中添加标记?,python,python-3.x,replace,web-scraping,Python,Python 3.x,Replace,Web Scraping,我从中抓取的Html: <tr> <td align="left" bgcolor="#ffff99"> <font size="2"> <a href="some/link.htm"> <b>SomeStuff</b> </a> </font> </td> &l
<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>
我需要从列表中的元素中删除HTML标记。但是,当我创建循环时,它不会在列表中保存任何更改。我的列表如下所示:
my_list = ['<br>SomeStuff</br>','some/link.htm',
'<br>SomeMoreStuf</br>', 'some/link2.htm',
'<br>EvenMoreStuff</br>', 'some/link3.htm']
my_list=['
SomeStuff','some/link.htm',
“
SomeMoreStuf”,“some/link2.htm”,
“
EvenMoreStuff”,“some/link3.htm']
我试过这个:
for i in my_list:
i = i.replace('<br>','')
i = i.replace('</br>','')
对于我的_列表中的i:
i=i.replace(“
”,“)
i=i.replace(“”,“)
我试过这个:
for i in my_list:
if '<br>' in i:
i = i.replace('<br>','')
if '</br> in i:
i = i.replace('</br>','')
对于我的_列表中的i:
如果i中的“
”:
i=i.replace(“
”,“)
如果“在i中:
i=i.replace(“”,“)
所有这些都不会改变原始列表。我可以通过不存储任何更改来打印所需的更正:
for i in my_list:
i.replace('<br>','')
对于我的_列表中的i:
i、 替换(“
”,“”)
但是,我需要将更改保存在列表中。所有解决方案都有效,您只是忘记了更新列表
for i, element in enumerate(my_list):
element = element.replace('<br>','')
element = element.replace('</br>','')
my_list[i] = element
如果所有字符串的开头和结尾都只有标记,则可以对字符串进行切片以删除它们。请尝试以下代码:
for lst in my_list:
if '<br>' in lst:
my_list.append(lst[4:-5])
my_list.remove(lst)
请试一试
或者
i.get_text()
或
我认为其中一个应该直接向您提供数据的内容。因此,在此之后不需要删除标记
希望有帮助。因此,我最终解决了这个问题,将这两个元素写入excel文件,然后在excel中使用“查找并替换” 您需要(a)创建一个新列表并将修改后的字符串附加到该新列表中,(b)使用列表理解,或(c)通过索引修改原始列表。实际上,您应该从一开始就发布所有问题!有一种更简单的方法可以完成此操作,而不是删除列表中的标记。有关详细信息,请参阅我的答案。我已尝试了这两种方法,没有错误,但列表不会发生任何更改。请尝试for循环或列表压缩然后立即打印(我的清单)。我可以向你保证,它会改变列表,反映我写的输出。不,如果我可以添加一个屏幕截图,我会给你看。所以如果我创建自己的列表并尝试它,它会工作,但对于我刮的列表,它不工作……奇怪。在你的问题中包括你如何刮它,然后我会研究它。我建议你尝试我的方法,u从beautifulsoup使用.get_text()的内置方法。这将使您的生活更加轻松。出于某种原因,它不断返回“无类型对象只是没有属性文本”错误。
for lst in my_list:
if '<br>' in lst:
my_list.append(lst[4:-5])
my_list.remove(lst)
for i, lst in enumerate(my_list):
if '<br>' in lst:
my_list[i] = lst[4:-5]
str(i.find('b'))
i.get_text()
i.b.get_text()