Python richtypo 完整使用手册一、包基础概述1. 核心功能richtypo是专门用于西文印刷标点规范化、排版美化的轻量级Python库解决英文/多语言文本排版中引号、破折号、空格、缩写、符号、连字符等不规范问题实现出版级标准排版校正。核心能力智能替换直引号 为弯引号印刷引号“ ” ‘ ’区分单双引、嵌套引号修正短横-、减号、en破折号–、em破折号—区分区间、停顿、解释语义清除冗余空格、单词前后多余空白、标点前后非法空格规范化省略号...→…小数、千位分隔空格处理语言本地化排版规则英语、德语、法语、俄语、西班牙语等多国标点规则切换数字、单位、缩写、版权符号、度符号、角标自动替换可自定义过滤规则、禁用指定修正项、自定义替换映射支持纯文本、Markdown、HTML片段兼容处理不破坏基础标记。2. 适用场景电子书排版、网站文章格式化、爬虫文本清洗、论文预处理、文案批量美化、多语言内容标准化。3. 安装方式标准pip安装pipinstallrichtypo指定版本安装pipinstallrichtypo3.0.0国内镜像加速pipinstallrichtypo-ihttps://pypi.tuna.tsinghua.edu.cn/simple源码安装最新开发版gitclone https://github.com/richtypo/richtypo-py.gitcdrichtypo-py pipinstall.依赖仅Python标准库无额外第三方依赖兼容 Python3.7–3.12。二、核心语法、类与参数详解1. 核心入口类RichTypo所有排版规则由RichTypo实例控制基础构造语法fromrichtypoimportRichTypo typoRichTypo(langen,rulesNone,disable_rules[],enable_rules[],htmlFalse)resulttypo.process(raw_text)2. 构造函数参数完整说明参数类型默认值说明langstren语言规则集en英文、de德语、fr法语、ru俄语、es西语不同语言引号/空格规则不同ruleslistNone手动指定启用规则None加载当前语言全部规则disable_ruleslist[]禁用指定规则ID如[quotes, dashes]关闭引号/破折号修正enable_ruleslist[]仅启用指定规则优先级高于ruleshtmlboolFalse开启HTML兼容模式不修改标签内文本、保留标记、跳过代码块markdownboolFalseMarkdown兼容不修改代码块、行内标记内内容preserve_spacesboolFalse保留原文有意的多空格表格、对齐文本专用3. 内置规则ID可启用/禁用quotes弯引号转换dashes破折号/短横标准化ellipsis省略号替换spaces冗余空格清理numbers数字、单位、千分位空格symbols版权©、度数°、乘号×、角标hyphens复合词连字符修正abbreviations缩写点规范化Mr. / U.S.A.4. 实例方法.process(text: str) - str主处理函数输入原始文本返回排版美化后字符串。.get_active_rules() - list查询当前实例启用的所有规则ID用于调试。.add_custom_rule(pattern: str, replacement: str, priority50)添加自定义正则替换规则priority数值越小越先执行。.reset()重置实例配置恢复语言默认规则。5. 极简单行语法快速工具函数包内置快捷函数无需创建实例fromrichtypoimporttypograph# 单行处理英文文本clean_texttypograph(raw_text,langen,htmlFalse)三、8个完整可运行实际应用案例案例1英文普通文章基础标点美化最常用需求将爬虫获取的直引号、省略号、多余空格文本标准化出版英文格式fromrichtypoimporttypograph rawHe said: It\s just... a 9 - 5 job -- boring! Don\t worry, she replied.# 英文默认规则处理formattedtypograph(raw,langen)print(原始,raw)print(美化,formatted)输出效果直引号变弯引号、...→…、区间9 - 5→9–5、双横杠--→em破折号—案例2德语文本本地化排版特殊引号« »德语使用低引号高引号规则与英文完全不同fromrichtypoimportRichTypo typo_deRichTypo(langde)text_deEr sagte: Ich habe gestern 10 - 20 Bücher gekauft...restypo_de.process(text_de)print(res)# 输出带德语印刷引号、德语空格分隔数字区间案例3HTML网页文本排版不破坏标签场景清洗网页正文避免p b标签内部符号被错误修改fromrichtypoimporttypograph html_rawpHello world -- price: 100 .../pb9 - 19 USD/b# htmlTrue开启标签保护clean_htmltypograph(html_raw,langen,htmlTrue)print(clean_html)# p“Hello world” — price: 100 …/pb9–19 USD/b案例4Markdown文档处理跳过代码块场景批量格式化Markdown文章不修改代码块、行内代码fromrichtypoimportRichTypo md_text# ArticleThe valueis40 - 60...print(raw text -- test) python sraw quote -- 1-10‘’’typo_md RichTypo(lang“en”, markdownTrue)result typo_md.process(md_text)print(result)仅正文修正代码块内引号、破折号保持原样### 案例5禁用指定规则仅清理空格和省略号 需求不想修改引号只清除多余空格、替换三点省略号 python from richtypo import RichTypo raw Test ... 5 - 10 -- # 禁用引号、破折号规则只启用spaces、ellipsis typo RichTypo(langen, disable_rules[quotes, dashes]) out typo.process(raw) print(out) # 输出 Test … 5 - 10 --案例6自定义替换规则添加版权、注册商标符号内置规则无商标替换通过add_custom_rule扩展自定义排版逻辑fromrichtypoimportRichTypoimportre typoRichTypo(langen)# 自定义正则(R) → ® 、(C) → ©typo.add_custom_rule(r\(R\),®,priority10)typo.add_custom_rule(r\(C\),©,priority10)textProductName(R), All Right Reserved (C) 2026restypo.process(text)print(res)# ProductName®, All Right Reserved © 2026案例7批量读取TXT文件夹批量美化输出文件批量处理场景小说、文案批量标准化importosfromrichtypoimporttypograph input_dir./raw_text/output_dir./formatted_text/os.makedirs(output_dir,exist_okTrue)# 遍历所有txt文件forfilenameinos.listdir(input_dir):iffilename.endswith(.txt):file_pathos.path.join(input_dir,filename)withopen(file_path,r,encodingutf-8)asf:contentf.read()# 排版处理fixedtypograph(content,langen)# 写入新文件out_pathos.path.join(output_dir,filename)withopen(out_path,w,encodingutf-8)asf:f.write(fixed)print(批量格式化完成)案例8多语言混合文本分段处理英文法语切换一段文本包含英法双语分段使用不同语言规则分别校正fromrichtypoimportRichTypo typo_enRichTypo(langen)typo_frRichTypo(langfr)para_enHe shouted: The deadline is 3 - 7 days...para_frIl dit: le prix est 10 - 50 euros !fix_entypo_en.process(para_en)fix_frtypo_fr.process(para_fr)fullfEnglish:\n{fix_en}\nFrench:\n{fix_fr}print(full)四、常见错误、报错原因与解决方案1. ModuleNotFoundError: No module named ‘richtypo’原因未执行pip安装、安装环境不对多Python版本/虚拟环境隔离解决pip3installrichtypo# 或指定当前解释器python-mpipinstallrichtypo2. UnicodeEncodeError: ‘gbk’ codec can’t encode character ‘“’原因Windows默认文件编码GBK弯引号、特殊符号无法写入解决读写文件强制指定encodingutf-8withopen(out.txt,w,encodingutf-8)asf:f.write(result)3. HTML标签内部文本被错误修改原因未开启htmlTrue参数库默认纯文本模式解决创建实例或调用typograph时添加htmlTrue4. Markdown代码块里的引号被转换原因未开启markdownTrue无法识别、行内代码标记解决RichTypo(markdownTrue)5. 自定义规则不生效常见原因正则表达式未转义反斜杠写成单\priority数值过大内置规则提前覆盖自定义替换修复示例使用原始字符串rpattern调低prioritytypo.add_custom_rule(r\(TM\),™,priority5)6. 语言参数传错导致排版错乱langcn不存在报错/异常表现无报错但标点完全不符合预期支持语言仅en/de/fr/ru/es无中文专用规则中文排版需自行加自定义规则7. 处理超大文本卡顿原因一次性传入几万行长文本正则全局匹配耗时优化方案按段落分割逐段处理分段合并结果8. 嵌套引号转换逻辑混乱三重引号错误原因原文引号嵌套格式不规范库正则无法100%识别极端嵌套解决预处理先清洗残缺引号或临时disable_rules[quotes]手动处理五、使用注意事项与最佳实践1. 编码强制统一所有输入输出文件必须使用UTF-8Windows环境极易出现特殊符号乱码。2. 语言规则选择要点英文写作langen德语书籍/网页langde法语文案langfr混合多语言分段分别处理不要混用一套语言规则。3. 代码、代码块处理规范处理Markdown/HTML代码片段时必须开启对应兼容开关否则会破坏代码语法引号。4. 禁用规则合理搭配代码文本禁用quotes、dashes纯数字表格开启preserve_spacesTrue防止对齐空格被清除。5. 自定义规则优先级priority 0–20优先执行符号替换、商标、版权priority 50默认内置规则区间priority 80–100后置替换文本整体修饰6. 不适合中文原生排版richtypo仅面向西文无中文顿号、书名号、全角空格规则中文排版建议搭配zh-typo、pangu库配合使用。7. 爬虫文本预处理顺序建议去除HTML标签 → 2. richtypo标点美化 → 3. 自定义敏感词替换 → 4. 存储文本8. 生产环境批量处理优化超大文件分块读取避免一次性加载全文至内存批量任务添加异常捕获防止单文件格式错误中断全部流程。try:restypo.process(content)exceptExceptionase:print(f处理失败跳过文件{filename}, 错误{e})rescontent9. 输出校验处理前后对比关键标点引号、破折号复杂嵌套文本建议人工抽样校验极端不规则原文可能存在少量转换偏差。《动手学PyTorch建模与应用:从深度学习到大模型》是一本从零基础上手深度学习和大模型的PyTorch实战指南。全书共11章前6章涵盖深度学习基础包括张量运算、神经网络原理、数据预处理及卷积神经网络等后5章进阶探讨图像、文本、音频建模技术并结合Transformer架构解析大语言模型的开发实践。书中通过房价预测、图像分类等案例讲解模型构建方法每章附有动手练习题帮助读者巩固实战能力。内容兼顾数学原理与工程实现适配PyTorch框架最新技术发展趋势。