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

如何处理.txt文件区分换行与段落,生成带HTML标签的内容

批量将无格式TXT转换为带标题段落的HTML

核心思路是按空行分割内容块,区分标题和段落,再给不同块套对应HTML标签,同时保留段落内部的换行。

单个文件处理代码

# 读取目标TXT文件
with open('sample.txt', 'r', encoding='utf-8') as f:
    full_content = f.read()

# 按空行分割成独立内容块,过滤掉空块和多余空白
import re
content_blocks = [block.strip() for block in re.split(r'\n\s*\n', full_content) if block.strip()]

# 生成HTML片段
html_sections = []
# 第一个块作为h1
if content_blocks:
    html_sections.append(f'<h1>{content_blocks[0]}</h1>')
# 第二个块作为h2
if len(content_blocks) >= 2:
    html_sections.append(f'<h2>{content_blocks[1]}</h2>')
# 剩余块作为段落,保留内部换行
for para in content_blocks[2:]:
    html_sections.append(f'<p>{para}</p>')

# 拼接成最终HTML,块之间用空行分隔
final_html = '\n\n'.join(html_sections)

# 保存为HTML文件
with open('sample.html', 'w', encoding='utf-8') as f:
    f.write(final_html)

批量处理多个TXT文件

如果要处理目录下所有TXT文件,用os模块遍历即可:

import os
import re

# 指定TXT文件所在目录
txt_folder = './your_txt_folder'

for file_name in os.listdir(txt_folder):
    if file_name.endswith('.txt'):
        txt_path = os.path.join(txt_folder, file_name)
        # 读取文件内容
        with open(txt_path, 'r', encoding='utf-8') as f:
            full_content = f.read()
        # 分割内容块
        content_blocks = [block.strip() for block in re.split(r'\n\s*\n', full_content) if block.strip()]
        # 生成HTML
        html_sections = []
        if content_blocks:
            html_sections.append(f'<h1>{content_blocks[0]}</h1>')
        if len(content_blocks) >= 2:
            html_sections.append(f'<h2>{content_blocks[1]}</h2>')
        for para in content_blocks[2:]:
            html_sections.append(f'<p>{para}</p>')
        final_html = '\n\n'.join(html_sections)
        # 保存为对应HTML文件
        html_file_name = os.path.splitext(file_name)[0] + '.html'
        html_path = os.path.join(txt_folder, html_file_name)
        with open(html_path, 'w', encoding='utf-8') as f:
            f.write(final_html)

关键说明

  • 不用readlines()是因为它会把每一行单独拆分,而我们需要的是视觉上的段落/标题块,用read()读取全部内容后按空行分割更准确。
  • 用正则re.split(r'\n\s*\n', ...)是为了兼容多个连续换行、带空格的空行,避免分割出错。
  • 段落内部的换行会被保留,符合你给出的示例格式;如果需要去掉段落内换行,把para替换成para.replace('\n', ' ')即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 00:18:13