MST

星途 面试题库

面试题:Python的sub和subn在复杂文本处理中的运用

有一个包含HTML标签的文本字符串 '<p>Some text here <b>emphasized</b> more text</p>',要求使用sub或subn方法去除所有HTML标签(保留标签内文本),只保留纯文本内容。请详细说明思路并给出代码实现,同时解释为什么选择sub或者subn。
47.4万 热度难度
编程语言Python

知识考点

AI 面试

面试题答案

一键面试

思路

  1. 使用正则表达式来匹配HTML标签。正则表达式<.*?>可以匹配从<开始到>结束的任何内容,也就是HTML标签。
  2. 使用re模块中的subsubn方法将匹配到的HTML标签替换为空字符串,从而达到去除标签,保留标签内文本的目的。

代码实现

import re

text = '<p>Some text here <b>emphasized</b> more text</p>'
# 使用sub方法
result_sub = re.sub('<.*?>', '', text)
print(result_sub)

# 使用subn方法
result_subn = re.subn('<.*?>', '', text)
print(result_subn[0])

选择sub或者subn的原因

  1. sub方法sub方法只返回替换后的字符串。如果我们只关心最终处理后的纯文本内容,sub方法足够满足需求,它简洁明了,直接返回处理后的结果。
  2. subn方法subn方法返回一个元组,第一个元素是替换后的字符串,第二个元素是替换的次数。如果在某些情况下,我们不仅需要处理后的字符串,还想知道替换操作执行了多少次,就可以选择subn方法。但对于本题需求,仅获取纯文本内容,subsubn在功能上都能实现,只是sub更为直接简单。