Python删除Span标记并覆盖Txt文件

Python删除Span标记并覆盖Txt文件,python,html,beautifulsoup,bs4,Python,Html,Beautifulsoup,Bs4,在ping文本文档之前,我想从文本文档中删除span标记,否则它将失败,但我无法让它删除span标记,或者在没有标记的情况下再次保存文件,或者将新结果保存到要保存的数组中 from bs4 import BeautifulSoup with open(r'sitelist.txt') as f: f = f.read().splitlines() soup = BeautifulSoup(f,"html.parser") while len(soup.find_all('span'

在ping文本文档之前,我想从文本文档中删除span标记,否则它将失败,但我无法让它删除span标记,或者在没有标记的情况下再次保存文件,或者将新结果保存到要保存的数组中

from bs4 import BeautifulSoup

with open(r'sitelist.txt') as f:
    f = f.read().splitlines()

soup = BeautifulSoup(f,"html.parser")

while len(soup.find_all('span')) > 0:
    soup.span.extract()

f = soup

return f
我试图分解或展开,但无法得到我想要的结果。

啊。。。返回一个列表,不能只在列表上使用
BeautifulSoup()
。相反,只需将
f=f.read().splitlines()
替换为
f=f.read()

然后,你的代码工作了,你只需要把输出写入一个文件,对吗

from bs4 import BeautifulSoup

with open(r'sitelist.txt') as f:
    f = f.read()

soup = BeautifulSoup(f, "html.parser")

while len(soup.find_all('span')) > 0:
    soup.span.extract()

with open(r'sitelist.txt', 'w') as f:
    f.write(str(soup))

如上所述,您不需要使用
readline()
,只需要使用
read()
。 我不确定提取物是否有效,是吗? 这是我的解决方案,它只是删除了span标记(我想这就是您所要求的):


我确信有一种方法可以打开一个文件进行读写,但我只是打开并重新打开了两次文件。

这似乎删除了整个网站链接,在新文本文档中造成了空白。但我认为我们肯定正在接近一个解决方案。谢谢。@CBux:好吧,因为它只是从文本文件中删除了所有的
span
标记(我认为这是一个HTML文件,对吗?)。如果这个答案有帮助,记得接受它。请查看我们的和,以了解更多详细信息。如果它删除了整行,那么它有点让我倒退。有没有一种方法可以保存url,但只需去掉包含它的span标记就可以了?明白了!而不是:soup.span.extract(),我用了soup.span.unwrap()@CBux:啊,是的,就是这样。很高兴你找到了解决方案。我用“展开”代替了“提取”,它完美地去除了标签。谢谢你的帮助!
from bs4 import BeautifulSoup

with open('sitelist.txt', 'r') as html:
    soup = BeautifulSoup(myfile,"html.parser")
    for match in soup.findAll('span'): 
        match.unwrap()

with open('sitelist.txt', 'w') as html:
    html.write(str(soup))