当前位置: 首页 > news >正文

一个小而实用的 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 库的作用不可小觑。它通过自动在中文字符和英文字符之间添加空格的简单操作,大大提升了文档的整体可读性和美观度。


相关文章:

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

🍉 CSDN 叶庭云:https://yetingyun.blog.csdn.net/ 一个小巧的库,可以避免自己重新开发功能。利用 Python 包 pangu,可以轻松实现在 CJK(中文、日文、韩文)和半宽字符(字母、数字和符号&#xf…...

openJudge | 中位数 C语言

总时间限制: 2000ms 内存限制: 65536kB 描述 中位数定义:一组数据按从小到大的顺序依次排列,处在中间位置的一个数或最中间两个数据的平均值(如果这组数的个数为奇数,则中位数为位于中间位置的那个数;如果这组数的个…...

ctfshow-文件上传(web151-web161)

目录 web151 web152 web153 web154 web155 web156 web157 web158 web159 web160 web161 web151 提示前台验证不可靠 那限制条件估计就是在前端设置的 上传php小马后 弹出了窗口说不支持的格式 查看源码 这一条很关键 这种不懂直接ai搜 意思就是限制了上传类型 允许…...

cudnn免登录下载

现在要下载cuDNN,点击下载的页面后都是出现要求先加入Nvidia developers才能进行下载,但这个注册的过程非常慢,常常卡在第二个步骤,这里根据亲身的经验介绍一个可以绕过这个注册或登陆步骤的方式直接下载cuDNN。遇到此类问题的可以…...

SQLyog安装配置(注册码)连接MySQL

下载资源 博主给你打包好了安装包,在网盘里,只有几Mb,防止你下载到钓鱼软件 快说谢谢博主(然后心甘情愿的点个赞~😊) SQLyog.zip 安装流程 ①下载好压缩包后并解压 ②打开文件夹,双击安装包 ③…...

java+SSM+mysql 开放式实验管理系统78512-计算机毕业设计项目选题推荐(免费领源码)

摘 要 我国高校开放式实验管理普遍存在实验设备使用率较低、管理制度不完善,实验设备共享程度不高等诸多问题。要在更大范围推行开放式实验管理,就必须在开放式实验教学管理流程中,通过引入信息化管理加大信息技术在其中的应用,才能真正发挥这种教学模式的开放性优势。 本系统…...

代码随想录算法训练营第三十三天|1005.K次取反后最大化的数组和、134.加油站、135.分发糖果

1005.K次取反后最大化的数组和 public class Solution {public int LargestSumAfterKNegations(int[] nums, int k) {int cnt0;int sum0;int minint.MaxValue;Array.Sort(nums);for(int i0;i<nums.Length;i){if(nums[i]>0){continue;}else{nums[i]-nums[i];cnt;}if(cntk…...

解决LeetCode编译器报错的技巧:正确处理位操作中的数据类型

一天我在leetcode上刷题时&#xff0c;遇到了这样的题目&#xff1a; 随即我写了如下的代码&#xff1a; int convertInteger(int A, int B) {int count 0;int C A ^ B;int flag 1;while(flag){if (C & flag){count;}flag<<1;}return count;} 但LeetCode显示如下…...

一周学会Django5 Python Web开发-Django5操作命令

锋哥原创的Python Web开发 Django5视频教程&#xff1a; 2024版 Django5 Python web开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili2024版 Django5 Python web开发 视频教程(无废话版) 玩命更新中~共计11条视频&#xff0c;包括&#xff1a;2024版 Django5 Python we…...

反转链表【基础算法精讲 06】

视频地址 反转链表【基础算法精讲 06】_哔哩哔哩_bilibili 概念 链表的每一个结点都包含节点值 和1指向下一个结点的next指针 , 链表的最后一个结点指向空; 206 . 反转链表 用cur记录当前遍历到的结点 &#xff0c; 用pre表示下一个结点 &#xff0c; 用nxt表示cur的下一个…...

Git 初学

目录 一、需求的产生 二、版本控制系统理解 1. 认识版本控制系统 2. 版本控制系统分类 &#xff08;1&#xff09;集中式版本控制系统 缺点&#xff1a; &#xff08;2&#xff09;分布式版本控制系统 三、初识 git 四、git 的使用 例&#xff1a;将 “ OLED文件夹 ”…...

智胜未来,新时代IT技术人风口攻略-第四版(弃稿)

文章目录 前言鸿蒙生态科普调研人员画像高校助力鸿蒙高校鸿蒙课程开设占比教研力量并非唯一原因 企业布局规划全盘接纳仍需一段时间企业对鸿蒙的一些诉求 机构入场红利机构鸿蒙课程开设占比机构对鸿蒙的一些诉求 鸿蒙实际体验高校用户群体高度认同与影响体验企业用户群体未来可…...

渗透专用虚拟机(公开版)

0x01 工具介绍 okfafu渗透虚拟机公开版。解压密码&#xff1a;Mrl64Miku&#xff0c;压缩包大小&#xff1a;15.5G&#xff0c;解压后大小&#xff1a;16.5G。安装的软件已分类并在桌面中体现&#xff0c;也可以使用everything进行查找。包含一些常用的渗透工具以及一些基本工…...

HCIA-HarmonyOS设备开发认证V2.0-3.2.轻量系统内核基础-时间管理

目录 一、时间管理1.1、时间接口1.2、代码分析&#xff08;待续...&#xff09; 坚持就有收获 一、时间管理 时间管理以系统时钟为基础&#xff0c;给应用程序提供所有和时间有关的服务。系统时钟是由定时器/计数器产生的输出脉冲触发中断产生的&#xff0c;一般定义为整数或长…...

嵌入式培训机构四个月实训课程笔记(完整版)-Linux ARM驱动编程第五天-ARM Linux编程之file_operations详解 (物联技术666)

链接&#xff1a;https://pan.baidu.com/s/1V0E9IHSoLbpiWJsncmFgdA?pwd1688 提取码&#xff1a;1688 struct file_operations{ struct module *owner; // 指向拥有该结构的模块的指针&#xff0c;避免正在操作时被卸载&#xff0c;一般为初始化THIS_MODULES loff_t &#…...

第9章 网络编程

9.1 网络通信协议 通过计算机网络可以实现多台计算机连接&#xff0c;但是不同计算机的操作系统和硬件体系结构不同&#xff0c;为了提供通信支持&#xff0c;位于同一个网络中的计算机在进行连接和通信时必须要遵守一定的规则&#xff0c;这就好比在道路中行驶的汽车一定要遵…...

Python setattr函数

在Python编程中&#xff0c;setattr()函数是一个有用且灵活的内置函数&#xff0c;用于设置对象的属性值。它可以在运行时动态地设置对象的属性&#xff0c;无论是新建对象还是已有对象。本文将深入探讨setattr()函数的用法、语法、示例代码&#xff0c;并探讨其在实际编程中的…...

[C#]winform制作仪表盘好用的表盘控件和使用方法

【仪表盘一般创建流程】 在C#中制作仪表盘文案&#xff08;通常指仪表盘上的文本、数字或指标显示&#xff09;涉及到使用图形用户界面&#xff08;GUI&#xff09;组件&#xff0c;比如Windows Forms、WPF (Windows Presentation Foundation) 或 ASP.NET 等。以下是一个使用W…...

探索弗洛姆的思想:人类本质与爱的哲学

探索弗洛姆的思想&#xff1a;人类本质与爱的哲学 摘要&#xff1a;艾里希弗洛姆是20世纪著名的德裔美国哲学家和精神分析学家&#xff0c;他的理论在心理学、社会学和哲学领域均产生了广泛影响。弗洛姆的核心思想围绕人的本性、自由发展以及爱的重要性展开&#xff0c;强调了人…...

【碎片知识点】安装Linux系统 VMware与kali

天命&#xff1a;VMware就是可以运行操作系统的载体&#xff0c;kali就是Linux的其中一个分支 天命&#xff1a;Linux有两个分支版本&#xff1a;centos与ubuntu&#xff0c;kali底层就是ubuntu&#xff08;所有Linux用起来都差不多&#xff0c;没啥区别&#xff09; 天命&…...

从格式枷锁到自由播放:ncmdumpGUI的NCM解码技术突围

从格式枷锁到自由播放&#xff1a;ncmdumpGUI的NCM解码技术突围 【免费下载链接】ncmdumpGUI C#版本网易云音乐ncm文件格式转换&#xff0c;Windows图形界面版本 项目地址: https://gitcode.com/gh_mirrors/nc/ncmdumpGUI 当你花费数小时精心收藏的音乐专辑在智能音箱上…...

终极指南:ZoneMinder开源监控系统的架构设计与核心组件解析

终极指南&#xff1a;ZoneMinder开源监控系统的架构设计与核心组件解析 【免费下载链接】zoneminder ZoneMinder is a free, open source Closed-circuit television software application developed for Linux which supports IP, USB and Analog cameras. 项目地址: https…...

AI头像生成器新手教程:5个常用风格关键词+3类背景模板Prompt速查表

AI头像生成器新手教程&#xff1a;5个常用风格关键词3类背景模板Prompt速查表 1. 快速了解AI头像生成器 AI头像生成器是一个帮你设计专属头像创意的智能工具。你只需要简单描述想要的头像风格&#xff0c;它就能生成详细的描述文案&#xff0c;这些文案可以直接用在Midjourne…...

如何分析竞争对手的seo关键词

<h2>如何分析竞争对手的SEO关键词</h2> <p>在当今竞争激烈的互联网市场中&#xff0c;了解和分析竞争对手的SEO关键词是提升自己网站排名的关键。SEO关键词分析不仅可以帮助你发现市场上的机会&#xff0c;还能让你更好地了解竞争对手的策略&#xff0c;从而…...

嵌入式WebSocket客户端:零malloc、状态机驱动的轻量级实现

1. WebSocketClient 库深度解析&#xff1a;面向嵌入式系统的轻量级 WebSocket 客户端实现WebSocket 协议&#xff08;RFC 6455&#xff09;作为全双工通信的工业级标准&#xff0c;在嵌入式边缘设备与云平台、Web 控制台、MQTT 网关桥接等场景中已成刚需。然而&#xff0c;主流…...

圣女司幼幽-造相Z-Turbo多模态生成:从文本到视频脚本的连贯创作

圣女司幼幽-造相Z-Turbo多模态生成&#xff1a;从文本到视频脚本的连贯创作 最近在尝试一些新的内容创作工具&#xff0c;发现了一个挺有意思的现象&#xff1a;很多工具要么只能做图&#xff0c;要么只能写文案&#xff0c;想把它们串起来做个完整的视频&#xff0c;中间总得…...

OpenClaw隐私保护设计:GLM-4.7-Flash本地处理医疗笔记整理

OpenClaw隐私保护设计&#xff1a;GLM-4.7-Flash本地处理医疗笔记整理 1. 为什么医疗数据必须留在本地&#xff1f; 去年帮家人整理慢性病就诊记录时&#xff0c;我遇到一个两难选择&#xff1a;要么手动整理上百张化验单和处方笺&#xff0c;要么使用云端OCR工具自动处理。当…...

Python新手必看:PyCharm 2021.2.3社区版安装与配置全攻略(附环境变量检查)

Python开发环境搭建指南&#xff1a;PyCharm社区版安装与高效配置实战 如果你正准备踏入Python编程的世界&#xff0c;选择一款趁手的开发工具至关重要。JetBrains推出的PyCharm社区版凭借其智能代码补全、强大调试功能和丰富的插件生态&#xff0c;成为众多Python初学者的首选…...

从ONNX到MLU:基于MagicMind的GFPGANv1.4超分模型部署与性能调优实战

1. 环境准备与模型转换 寒武纪MLU平台上的AI模型部署需要从基础环境搭建开始。我最近在MLU370-M8卡上部署GFPGANv1.4超分模型时&#xff0c;发现选择合适的Docker镜像是第一步关键。官方推荐的pytorch:v24.10镜像已经预装了torch2.4.0和torchmlu1.23.1&#xff0c;这省去了大量…...

告别‘Hello World’:用Gin框架从零搭建一个带用户登录和文件上传的Web服务(Go 1.21+)

告别‘Hello World’&#xff1a;用Gin框架从零搭建一个带用户登录和文件上传的Web服务&#xff08;Go 1.21&#xff09; 当你已经掌握了Go语言的基础语法&#xff0c;接下来最令人兴奋的莫过于亲手构建一个真实的Web服务。Gin框架以其高性能和简洁的设计&#xff0c;成为Go开发…...