如何处理.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
相关产品推荐
相关产品推荐

