Python使用python3.6从HTML文本中清除标记

2024-03-29 08:41:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试创建一个程序,可以“找到”指定的HTML标记,并用其他东西“替换”这些标记(处理作为字符串导入的HTML文本)。你知道吗

免责声明:我对python非常陌生,所以可能遗漏了一些明显的东西。 此外,基于之前的帖子主题类似于此,我猜测使用正则表达式模块可能最适合这个项目(不过我会采纳其他建议)。你知道吗

以下是我的“输入”文本:

<p align="left"><span style="font-family: Arial,Arial; font-size: 12px; color: #ffffff;">Example Company | Technical How-To</span></p>  

以下是我想要的“输出”文本:

<p>Example Company | Technical How-To</p>  

以下是我的“输出”文本:

</p> 

下面是我用来得到答案的python代码:

while True: 

  import re
  print("Enter HTML Text Below")
  original = input("")


  def cleaner(raw_html):
    cleantextp = re.sub('<p.*?>', '<p>', raw_html)
    cleantextspan1 = re.sub('<span.*?>', '', cleantextp)
    cleantextspan2 = re.sub('<.*?/span>', '', cleantextspan1)
    return cleantextspan2

  if len(original) > 0:

    print(cleaner(original))

  else:
    print("Please try again")

对我来说,奇怪的是,当我把我定义的函数“分离”出来,让它一次“清理”一个指定的标签时,它似乎工作了。示例:

while True: 

  import re
  print("Enter HTML Text Below")
  original = input("")


  def cleaner(raw_html):
    cleantextp = re.sub('<p.*?>', '<p>', raw_html)
    return cleantextp

  if len(original) > 0:

    print(cleaner(original))

  else:
    print("Please try again")

这段代码让我得到这个文本(不是有意删除<span>标记,但也不会再次返回</p>):

<p><span style="font-family: Arial,Arial; font-size: 12px; color: #ffffff;">Example Company | Technical How-To</span></p>

所以基本上,我被困住了。我尝试过几种不同的方法,包括为每个标记定义一个单独的“clean”函数,并按顺序遍历每个函数的“input”文本,但我没有任何运气。有什么建议吗?你知道吗


Tags: 标记文本rerawexamplehtmlcompanycleaner