Python批量转docx终极指南:正则抓标题+UTF8乱码修复实战

谈天说地4天前发布 esoua
1 00
网盘资源搜索

​500份TXT转DOCX,手动操作到天亮?​

​转完发现标题全失踪、中文变“火星文”?​

小编用血泪经验告诉你——批量转换的坑,90%栽在 ​​“标题识别”​​ 和 ​​“编码炸弹”​​ 上!今天手拆两座大山,教你用 ​​正则+编码修复组合拳​​ 10分钟自动化搞定!


► 第一板斧:正则抓标题,专治章节失踪

​为啥直接转DOCX标题全消失?​

TXT压根没目录结构!Word只会把文字堆成山。​​Python正则表达式​​ 才是救星,3步抓准标题:

python下载复制运行
import re
# 匹配中文/英文/带符号标题
pattern = r'(第[一二三四五六七八九十百千]+章|Chapter\s\d+|【\w+】)'
titles = re.findall(pattern, text)  # 一网打尽所有标题

​特殊标题怎么抓?​​ 补两条规则防漏网:

  1. ​带空格标题​​:加 |\d+\.\s+.+抓 “1. 开端”

  2. ​多级标题​​:补 |(?:[一二三四]、).+抓 “二、重要事件”

    ​避坑实测​​:

    • 先拿前3章测试规则,漏抓率直降80%

    • 复杂小说用 ​​多模式组合​​,比如《三体》的“危机纪元”得补 |纪元\d+年


► 第二板斧:批量转码术,绞杀UTF8乱码

​转换后中文变“叉笋”乱码?​

文件编码打架了!GBK硬塞进UTF8必崩盘。​​双保险修复方案​​:

​保险1:编码探测+强制纠正​

chardet自动检测编码,专治GBK/GB18030乱码:

python下载复制运行
import chardet
# 探测原始编码
with open('novel.txt', 'rb') as f:
    raw_data = f.read(10000)  # 读前1万字节足够
    encoding = chardet.detect(raw_data)['encoding']  # 返回GBK/UTF8等
# 按真实编码读取
with open('novel.txt', 'r', encoding=encoding, errors='replace') as f:
    text = f.read()

​保险2:BOM炸弹拆除​

UTF8文件开头的 \ufeff是隐藏炸弹,必须拆除:

python下载复制运行
if text.startswith('\ufeff'):
    text = text[1:]  # 一刀切掉BOM头

► 第三板斧:DOCX输出优化,排版不塌方

​转完段落挤成团?空格乱飞?​

TXT的换行符在Word里会造反!​​三招锁死完美排版​​:

  1. ​段落分割符替换​​:把 \n\n换成Word认识的段落标记

    python下载复制运行
    clean_text = re.sub(r'\n{2,}', '', text)  # 双换行变分段
  2. ​多余空格清理​​:连续空格缩成1个

    python下载复制运行
    clean_text = re.sub(r'[ ]{2,}', ' ', clean_text)
  3. ​样式批量套用​​:用 python-docx给标题刷样式

    python下载复制运行
    from docx import Document
    doc = Document()
    for line in clean_text.split(''): 
        if '第一章' in line: 
            doc.add_heading(line, level=1)  # 标题刷一级样式
        else:
            doc.add_paragraph(line)  # 正文用普通段落

小编的暴论+避坑指南

​正则翻车?乱码阴魂不散?记住三条铁律:​

  1. ​测试!测试!测试!​​ 正则规则先在 Regex101跑通再上生产

  2. ​备份大于天​​:转换前用 shutil.copy自动备份原文件

  3. ​大文件切割​​:超50MB的TXT先用EmEditor切20MB/份(别用记事本!会制造新乱码)

​终极彩蛋​​:遇到“锟斤拷”别慌!上 ​​ftfy库​​ 一键修复:

python下载复制运行
# 安装:pip install ftfy
from ftfy import fix_text
hell_text = "大安宁會领察取我"
human_text = fix_text(hell_text)  # 输出“大安岭领土归我”

​最后说句掏心话​​:批量转换的核心不是代码多牛,而是 ​​“先验证再量产”​​ ——用好这招,下班比别人早3小时!

© 版权声明

相关文章

暂无评论

none
暂无评论...