You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Python清理包含多余换行符的HTML代码?

解决HTML文本换行与标签拆分问题

你的核心问题是逐行处理无法跨行合并标签内的分散文本,换用整体读取+正则匹配的方式就能一次性解决所有问题。

实现思路

  1. 一次性读取整个HTML文件内容,避免逐行处理的局限性
  2. 用正则表达式匹配<h1>、<p>这类标签块,将块内的换行、多余空格清理合并
  3. 保留标签外的原有缩进和结构,只处理标签内的文本内容

完整代码示例

import re

html_filename = 'page.htm'

# 读取整个文件内容
with open(html_filename, encoding="utf-8") as f:
    content = f.read()

# 定义处理标签内文本的函数
def clean_tag_content(match):
    # 获取标签名和内部文本
    tag = match.group(1)
    text = match.group(2)
    # 去掉文本中的换行,将多个空格替换为单个空格
    cleaned_text = re.sub(r'\s+', ' ', text.strip())
    # 拼接成格式化后的标签
    return f'<{tag}>{cleaned_text}</{tag}>'

# 匹配<h1>和<p>标签块,应用清理函数
pattern = r'<(h1|p)>\s*(.*?)\s*</\1>'
formatted_content = re.sub(pattern, clean_tag_content, content, flags=re.DOTALL)

# 写入处理后的内容
with open(html_filename, 'w', encoding="utf-8") as f:
    f.write(formatted_content)

代码说明

  • re.DOTALL 让正则的.能匹配换行符,确保跨行的文本也能被完整捕获
  • clean_tag_content 函数负责清理标签内的文本:strip()去掉首尾空白,re.sub(r'\s+', ' ', ...)把所有连续的换行、空格替换为单个空格
  • 正则模式r'<(h1|p)>\s*(.*?)\s*</\1>'精准匹配成对的<h1>/<p>标签,\1保证标签闭合的一致性

运行后就能得到你想要的格式:标签内文本合并为一行,同时保留外部的缩进和结构。

内容的提问来源于stack exchange,提问作者mbrown1963

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 01:10:20