一个小而实用的 Python 包 pangu,实现在中文和半宽字符(字母、数字和符号)之间自动插入空格

🍉 CSDN 叶庭云https://yetingyun.blog.csdn.net/


一个小巧的库,可以避免自己重新开发功能。利用 Python 包 pangu,可以轻松实现在 CJK(中文、日文、韩文)和半宽字符(字母、数字和符号)之间自动插入空格。

在撰写中文技术博客时,我经常遇到一个问题:在中英文混排时,需要在英文字母、数字和符号两侧添加空格,以使排版更加美观。为了提高效率,让自己摆脱枯燥且容易出错的任务,我希望编写一个脚本来自动化完成这项工作。然而,在 GitHub 检索时,我发现 pangu 已经是一个构建良好的包,可以满足我的需求。

Github 地址:https://github.com/vinta/pangu.py

在这里插入图片描述

介绍 Python 包 pangu:

  • pangu 是一个专为中文文本处理设计的 Python 库,旨在自动化地在中文文本和半宽字符(如字母、数字和符号)之间添加适当的空格,确保文本的排版美观且易读。
  • pangu 不仅能够提高中文内容创作者的工作效率,还能节省大量手工处理排版的时间,特别是在涉及大量文章编辑的场合,效果尤为显著。
  • 这个小巧的库支持大部分 Python3 版本,并且拥有灵活的接口,可以轻松集成到现有的 Python 项目中。
  • 这个库取名为 pangu 的原因:可能寓意用来分隔混合的中英文字符?

在开始使用 pangu 之前,你需要先通过 pip 安装它。打开终端或命令提示符,输入以下命令:

pip install -U pangu

安装完成后,你就可以在 Python 代码中导入 pangu 并使用它。一个示例如下所示:

import panguoriginal_text = f"""Datawhale是一个专注于Data Science与AI领域的开源组织,汇集了众多领域院校和知名企业的优秀学习者,\
聚合了一群有开源精神和探索精神的团队成员。
双语字幕视频:吴恩达x OpenAI的Prompt Engineering课程专业翻译版"""
print(original_text)# 使用 pangu 处理文本
print("-" * 100)
processed_text = pangu.spacing(original_text)
print(processed_text)

在这里插入图片描述

最常见的使用场景是对混合的中英文文本添加合适的空格。pangu 提供了一个非常简单的函数 pangu.spacing 来实现这一点。执行上述代码,你会立刻得到带有正确空格的文本。pangu 自动在中文字符和英文字符之间加上了空格,从而改善了文本的可读性。

(PS. 三引号是 Python 中的一个强大工具,可以用于多种用途。无论是创建多行字符串、注释、模板字符串还是文档模板,它都能让我们的代码更加灵活和易读。👍)

处理文件

如果你需要处理整个文件,pangu 也有相应的函数 pangu.spacing_file。你可以这样使用它:

import panguprocessed_text = pangu.spacing_file('input.md')with open('output.md', 'w') as f:f.write(processed_text)

假设 input.md 文件中的内容是没有正确添加空格的中英文混排文本。spacing_file 函数将处理该文件,并将格式化后的文本保存到 output.md 中。

CLI 使用说明

pangu 也可以作为命令行(command-line)工具使用。在安装了 pangu 之后,你可以直接在终端中运行以下命令来处理文件:

pangu -f input.mdpangu -t "Datawhale是一个专注于Data Science与AI领域的开源组织。。。"

PS. 传入文本文件时,注意文件路径得设置正确。

总结:在中英混排的文本编辑过程中,pangu 库的作用不可小觑。它通过自动在中文字符和英文字符之间添加空格的简单操作,大大提升了文档的整体可读性和美观度。


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/679565.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用深度学习进行“序列到序列”回归

目录 下载数据 准备训练数据 定义网络架构 训练网络 测试网络 此示例说明如何使用深度学习预测发动机的剩余使用寿命 (RUL)。 要训练深度神经网络以根据时间序列数据或序列数据预测数值,可以使用长短期记忆 (LSTM) 网络。 此示例使用 [1] 中所述的涡轮风扇发动机…

电路设计(15)——篮球赛24秒违例倒计时报警器的proteus仿真

1.设计要求 设计、制作一个篮球赛24秒违例倒计时报警器。要求: (1)具有倒计时功能。可完整实现从“24”秒开始依序倒计时并显示倒计时过程,显示时间间隔为1秒。 (2)具有消隐功能。当“24”秒倒计时…

回溯算法总结

组合问题 剪枝精髓是:for循环在寻找起点的时候要有一个范围,如果这个起点到集合终止之间的元素已经不够题目要求的k个元素了,就没有必要搜索了 组合总和问题 需要保证if len(self.path) k:时一定要结束循环,犯的错误就是&…

nodejs切换版本

sudo n 18.17.0 sudo n然后键盘上下选择

PgSQL内核特性 - push-based pipeline 执行引擎

PgSQL内核特性 - push-based pipeline 执行引擎 数据库的SQL执行引擎负责处理和执行SQL请求。通常情况下,查询优化器会输出物理执行计划,一般由一系列的算子组成。当前,有两种算子流水线构建方式:1)需求驱动的流水线&a…

AJAX——常用请求方法

1 请求方法 请求方法:对服务器资源,要执行的操作 2 数据提交 场景:当数据需要在服务器上保存 3 axios请求配置 url:请求的URL网址 method:请求的方法,GET可以省略(不区分大小写) …

【计算机二级考试C语言】C排序算法

C 排序算法 冒泡排序 冒泡排序(英语:Bubble Sort)是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序(如从大到小、首字母从A到Z)错误就把他们交换过来。 实例 #include <stdio.h> void bubble_sort(int arr[], int len) {in…

防火墙安全策略及nat实验

要求一&#xff1a;生产区的设备在工作时间访问dmz区,仅可访问http服务器 要求二&#xff1a;办公区可以全天访问dmz区&#xff0c;其中10.0.2.20可以访问FTP服务器和HTTP服务器&#xff0c;10.0.2.10仅可以ping通10.0.3.10 要求三&#xff1a;办公区在访问服务器区时采用匿名认…

jsp课程教学管理系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 JSP 课程教学管理系统是一套完善的java web信息管理系统&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为 TOMCAT7.0,Myeclipse8.5开发&#xff0c;数据库为Mysql5.0…

Redis的持久化方式

Redis的持久化是什么 Redis 的数据全部在内存里&#xff0c;如果突然宕机&#xff0c;数据就会全部丢失&#xff0c;因此必须有一种机制来保证 Redis 的数据不会因为故障而丢失&#xff0c;这种机制就是 Redis 的持久化机制。 Redis 的持久化机制有三种 AOF日志&#xff1a;每…

【漏洞复现】狮子鱼CMS文件上传漏洞(wxapp.php)

Nx01 产品简介 狮子鱼CMS&#xff08;Content Management System&#xff09;是一种网站管理系统&#xff0c;它旨在帮助用户更轻松地创建和管理网站。该系统拥有用户友好的界面和丰富的功能&#xff0c;包括页面管理、博客、新闻、产品展示等。通过简单直观的管理界面&#xf…

基于LLM的业务流程自动化

在当今竞争激烈的商业环境中&#xff0c;业务流程&#xff08;尤其是文档处理工作流程&#xff09;的自动化对于寻求提高效率和减少人工错误的公司来说变得至关重要。 传统方法往往难以跟上任务的数量和复杂性&#xff0c;而人工主导的流程速度缓慢、容易出错&#xff0c;并且可…

零基础学编程从哪里入手,编程实例分享,配件进出库管理系统软件

零基础学编程从哪里入手&#xff0c;编程实例分享&#xff0c;配件进出库管理系统软件 一、前言 对于刚学编程的人来说&#xff0c;多看看现有的软件实例对自己学开发软件是很有帮助的。 下面分享的实例以配件进出库管理系统软件为例说明。 软件文件下载可以点击最下方官网…

线性代数的本质——1 向量

向量是线性代数中最为基础的概念。 何为向量&#xff1f; 从物理上看&#xff0c; 向量就是既有大小又有方向的量&#xff0c;只要这两者一定&#xff0c;就可以在空间中随便移动。 从计算机应用的角度看&#xff0c;向量和列表很接近&#xff0c;可以用来描述某对象的几个不同…

一个Spring Boot Admin 监控多个Nacos集群

背景 我们有多个系统&#xff0c;每个系统一个集群&#xff0c;每个集群都部署了自己的Spring Boot Admin&#xff08;以下简称Admin&#xff09;&#xff0c;用起来不仅不方便&#xff0c;私有化部署的时候还得多部署几个服务&#xff0c;为了解决这个问题&#xff0c;我想到…

S32 Design Studio的PE工具

S32 Design Studio软件是NXP公司专门为了方便用户开发S32K1系列芯片的IDE&#xff0c;跟Eclipse比较像。里面有个配套的图形工具Processor Expert&#xff0c;会产生一个后缀名为pe的文件&#xff0c;跟ST的cubemx作用类似。 双击pe文件即可打开pe界面&#xff0c;生成的文件将…

力扣hot100 -- 双指针

目录 &#x1f382;移动零 &#x1f319;盛最多水的容器 &#x1f33c;三数之和 &#x1f33c;接雨水 前缀和 辅助数组 双指针 单调栈 &#x1f382;移动零 283. 移动零 - 力扣&#xff08;LeetCode&#xff09; 关于swap #include <iostream> #include <vec…

vim 启用鼠标复制粘贴

其实这个是错误的标题&#xff0c; 其实是nvim&#xff0c;最近在使用parrot的vim时&#xff0c;发现右键粘贴文本的时候&#xff0c;左下显示-- &#xff08;insert&#xff09;VISUAL --&#xff0c;并且无法粘贴内容 一般网上会教你用set mouse-a &#xff0c;当然这个没有问…

Leetcode 3035. Maximum Palindromes After Operations

Leetcode 3035. Maximum Palindromes After Operations 1. 解题思路2. 代码实现 题目链接&#xff1a;3035. Maximum Palindromes After Operations 1. 解题思路 这一题的话因为可以任意交换&#xff0c;因此事实上要考察回文的最大个数&#xff0c;我们只需要统计所有单词当…

每日五道java面试题之java基础篇(五)

第一题. final、finally、finalize 的区别&#xff1f; final ⽤于修饰变量、⽅法和类&#xff1a;final 修饰的类不可被继承&#xff1b;修饰的⽅法不可被重写&#xff1b;修饰的变量不可变。finally 作为异常处理的⼀部分&#xff0c;它只能在 try/catch 语句中&#xff0c;…