Python删除网站html标记不起作用

Python删除网站html标记不起作用,python,html,regex,html-parsing,Python,Html,Regex,Html Parsing,我试图删除(html标记)中的文本,并将结果写入一个新文件。例如,一行文本可以是: < asdf> Text <here>more text< /asdf > 文本更多文本 因此,程序将写入输出文件:“Text more Text”,不包括html标记内的文本 这是我迄今为止的尝试: import urllib.request data=urllib.request.urlopen("some website").read() text1=data.d

我试图删除(html标记)中的文本,并将结果写入一个新文件。例如,一行文本可以是:

< asdf> Text <here>more text< /asdf >
文本更多文本
因此,程序将写入输出文件:“Text more Text”,不包括html标记内的文本

这是我迄今为止的尝试:

import urllib.request

data=urllib.request.urlopen("some website").read()

text1=data.decode("utf-8")

import re

def asd(text1):

    x=re.compile("<>")

    y=re.sub(x,"",text1)

    file1=open("textfileoutput.txt","w")

    file1.write(y)

    return y

asd(text1)
导入urllib.request
data=urllib.request.urlopen(“某些网站”).read()
text1=数据解码(“utf-8”)
进口稀土
def asd(文本1):
x=重新编译(“”)
y=re.sub(x,“,text1)
file1=open(“textfileoutput.txt”、“w”)
文件1.写入(y)
返回y
asd(文本1)

它似乎没有写干净的版本,仍然有标签。谢谢您的帮助。

只需将
re.compile(“”)替换为
re.compile(r“”)
就足够了

只需将
re.compile(“”)替换为
re.compile(r“”)
就足够了

您的正则表达式将只匹配“”。我建议这样的解决方案。你是对的,用这个:x=re.compile(r“]+>”)程序替换一行就可以了。谢谢。如果标签中某处包含>怎么办?正如alecxe指出的,尝试用正则表达式解析HTML通常不是最好的。正则表达式将只匹配“”。我建议这样的解决方案。你是对的,用这个:x=re.compile(r“]+>”)程序替换一行就可以了。谢谢。如果标签中某处包含>怎么办?正如alecxe所指出的,尝试用正则表达式解析HTML通常不是最好的。如果标签中某处包含>怎么办?如果标签中某处包含>怎么办?对于一些关心性能的人来说,
BeautifulSoup
非常慢,甚至使用
lxml
作为解析器。如果您的html文本确实格式良好,并且您信任您的正则表达式,那么使用它是没有问题的。对于其他一些关心性能的人来说,
BeautifulSoup
非常慢,甚至使用
lxml
作为解析器。如果您的html文本确实格式良好,并且您信任您的正则表达式,那么使用它就没有问题。
x=re.compile("<>")
In [1]: from bs4 import BeautifulSoup

In [2]: html = "<asdf>Text more text</asdf>"

In [3]: soup = BeautifulSoup(html, "html.parser")

In [4]: soup.asdf.unwrap()
Out[4]: <asdf></asdf>

In [5]: print(soup)
Text more text