【SRC-Python】在数字与字母 / 中文与英文之间插入空格的自动化解决方案

server/2024/9/24 5:33:19/

文章目录

  • Part.I Introduction
  • Part.II 使用方法
    • Chap.I 直接处理字符串
    • Chap.II 处理文件
  • Part.III Source Code
  • Reference

Part.I Introduction

在编辑文本的过程中,尤其是在 COPY 的过程中,经常会遇到如下问题:

  • 源文本数字与英文字母之间没有空格
  • 源文本中文与英文之间没有空格
  • 源文本中有很多空行

如果没有空格的话,看起来很紧凑,不美观。作为一个强迫症患者,每次我都要一个一个地把空格敲上去。有一天,我实在受不了这枯燥的工作了,我想能不能让计算机自动来完成这项简单且枯燥的工作呢?通过一些摸索,我找到了一种完美的解决方案,本文将对其进行简单的介绍。

在这里插入图片描述

Part.II 使用方法

首先需要安装两个 Python 的三方库:正则表达式处理库 re、美化中文排版工具“盘古” pangu

python">pip install re
pip install -U pangu

Chap.I 直接处理字符串

所用到的函数为

python">import re
import pangudef add_space_between_content(original_text):processed_text = pangu.spacing(original_text)pattern = r'([a-zA-Z]+)(\d+)'   # Letters before numbersdef add_space(match):return match.group(1) + ' ' + match.group(2)processed_text = re.sub(pattern, add_space, processed_text)pattern = r'(\d+)([a-zA-Z]+)'   # Numbers followed by letterprocessed_text = re.sub(pattern, add_space, processed_text)pattern = r"\n\s*\n"            # null string 空行processed_text = re.sub(pattern, "\n", processed_text)return processed_text

调用示例

python">original_text = f"""Datawhale是一个专注于Data Science与AI领域的开源组织,汇集了众多领域院校和知名企业的优秀学习者,\
聚合了一群有开源精神和探索精神的团队成员。
双语字幕视频:吴恩达x OpenAI的Prompt Engineering课程专业翻译版
测试1.2数字test1.3ce1.4测试"""
print(original_text)
print("-" * 60)
result2 = add_space_between_content(original_text)
print(result2)

输出结果

python">Datawhale是一个专注于Data Science与AI领域的开源组织,汇集了众多领域院校和知名企业的优秀学
习者,聚合了一群有开源精神和探索精神的团队成员。
双语字幕视频:吴恩达x OpenAI的Prompt Engineering课程专业翻译版
测试1.2数字test1.3ce1.4测试
----------------------------------------------------------------------------------------------------
Datawhale 是一个专注于 Data Science 与 AI 领域的开源组织,汇集了众多领域院校和知名企业的 
优秀学习者,聚合了一群有开源精神和探索精神的团队成员。
双语字幕视频:吴恩达 x OpenAI 的 Prompt Engineering 课程专业翻译版
测试 1.2 数字 test 1.3 ce 1.4 测试

Chap.II 处理文件

所用到的函数(上面的 add_space_between_content 加下面的)

python">def add_space_between_content_file(fin,fout):f = open(fin, encoding= 'utf-8', errors = 'ignore')original_text = f.read()f.close()modified_string = add_space_between_content(original_text)f1 = open(fout, 'w', encoding= 'utf-8', errors = 'ignore')f1.write(modified_string)f1.close()

调用示例

python">f1=r'A:\OHanlon\Desktop\a.txt'
f2=r'A:\OHanlon\Desktop\b.txt'
add_space_between_content_file(f1,f2)

测试所用源文件

python">
本测试名为“普通话水平测试”(PUTONGHUA SHUIPING CESHI,缩写为PSC)()读单音节字词 普通话水平测试单音共有100个音节(不包括轻声、儿化音节),限时3.5分钟,共10分。1.目的:测查应试人声母、韵母、声调读音标准程度。2.要求:(1100个音节中,70%选自《普通话水平测试用普通话词语表》“表一”,30%选自“表二”。(2100个音节中,每个声母出现次数一般不少于3次,每个韵母出现次数一般不少于2次,4个声调出现次数大致均衡。(3)音节的排列要避免同一测试要素连续出现。3.评分:(1)语音错误,每个音节扣0.1分;(2)语音缺陷,每个音节扣0.05分;(3)超时1分钟以内,扣0.5分,超时1分钟以上(含1分钟),扣1分。

输出文件

python">本测试名为 “普通话水平测试”(PUTONGHUA SHUIPING CESHI,缩写为 PSC)() 读单音节字词 普通话水平测试单音共有 100 个音节(不包括轻声、儿化音节),限时 3.5 分钟,共 10 分。
1. 目的:
测查应试人声母、韵母、声调读音标准程度。
2. 要求:
(1100 个音节中,70% 选自《普通话水平测试用普通话词语表》“表一”,30% 选自 “表二”。
(2100 个音节中,每个声母出现次数一般不少于 3 次,每个韵母出现次数一般不少于 2 次,4 个声调出现次数大致均衡。
(3)音节的排列要避免同一测试要素连续出现。
3. 评分:
(1)语音错误,每个音节扣 0.1 分;
(2)语音缺陷,每个音节扣 0.05 分;
(3)超时 1 分钟以内,扣 0.5 分,超时 1 分钟以上(含 1 分钟),扣 1 分。

Part.III Source Code

整个源码如下:

python">import re
import pangudef add_space_between_content(original_text):processed_text = pangu.spacing(original_text)pattern = r'([a-zA-Z]+)(\d+)'   # Letters before numbersdef add_space(match):return match.group(1) + ' ' + match.group(2)processed_text = re.sub(pattern, add_space, processed_text)pattern = r'(\d+)([a-zA-Z]+)'   # Numbers followed by letterprocessed_text = re.sub(pattern, add_space, processed_text)pattern = r"\n\s*\n"            # null string 空行processed_text = re.sub(pattern, "\n", processed_text)return processed_textdef add_space_between_content_file(fin,fout):f = open(fin, encoding= 'utf-8', errors = 'ignore')original_text = f.read()f.close()modified_string = add_space_between_content(original_text)f1 = open(fout, 'w', encoding= 'utf-8', errors = 'ignore')f1.write(modified_string)f1.close()original_text = f"""Datawhale是一个专注于Data Science与AI领域的开源组织,汇集了众多领域院校和知名企业的优秀学习者,\
聚合了一群有开源精神和探索精神的团队成员。
双语字幕视频:吴恩达x OpenAI的Prompt Engineering课程专业翻译版
测试1.2数字test1.3ce1.4测试"""
print(original_text)
print("-" * 60)
result2 = add_space_between_content(original_text)
print(result2)f1=r'A:\OHanlon\Desktop\a.txt'
f2=r'A:\OHanlon\Desktop\b.txt'
add_space_between_content_file(f1,f2)

Reference

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

http://www.ppmy.cn/server/38065.html

相关文章

北印度洋中尺度涡的海气热通量印记

Signature of Mesoscale Eddies on Air-Sea Heat Fluxes in the North Indian Ocean 2024 JGR 分析了涡旋的SST和湍流热通量量化了AE和CE引起的SST-THFssh-sst非想干涡旋在数量上和传统涡旋大致相当季节的变化使得涡旋的组成分为单极子、偶极子等形式

专业的保密网文件导入导出系统,让文件流转行为更可控安全

军工单位因其涉及国防安全和军事机密,对保密工作有极高的要求,通常会采取严格的网络隔离措施来保护敏感信息和提高网络安全性。常见的方式是通过物理隔离将网络彻底分隔开来,比如保密网和非保密网。网络隔离后,仍有数据交换的需求…

4K双路虚拟演播系统的应用功能

传统演播室的搭建需要耗费人力,物力以及设备资金的投入,而且后期人工加工成本也是一笔不小的开销。虚拟技术的出现为传统演播室带来了新的改变与挑战。 4K双路虚拟演播系统基于各种虚拟技术搭建起来的系统,是高度集成现代化校园节目、课程制作…

数据结构(一)初识数据结构

数据结构(一)初识数据结构 要点:解决问题的效率与数据的组织方式有关 思考:如何考虑数据结构 01 如何考虑数据结构 参考:从数据如何插入和如何取出两个角度考虑数据存储结构 在此基础上,考虑数据的空间…

【SQL】根据条件分组,并根据条件取最大的这一条数据

数据,当字段A相同时,取字段B数值大的这一条数据 ABC123114223234 期望结果 ABC123234 Oracle SELECT A, B, C FROM (SELECT A, B, C,ROW_NUMBER() OVER (PARTITION BY A ORDER BY B DESC) AS rnFROM 表名 ) WHERE rn 1; MySql SELECT t1.A, t1.B,…

工单管理系统解决方案(2024Word原件)

工单管理系统解决方案 1、工单创建:根据告警信息创建工单。 2、工单管理:列表形式展示所有工单信息及进度状态。 3、工单处理:对接收的工单进行处理反馈。 4、工单催办:根据工单时效自动发送工单催办消息通知。 5、工单归档&#…

【NodeMCU实时天气时钟温湿度项目 4】通过NTPClient库获取实时网络时间并显示在TFT屏幕上

今天是【实时天气时钟温湿度项目】第四专题,主要内容是:学习导入NTPClient库,通过这个库获取实时网络时间,显示在1.3寸TFT液晶屏幕上。此前三个专题,请选择查看以下链接。 第一专题内容,请参考 【N…

解决“您的连接不是私密连接”

目录 那么为什么会出现这样提示呢 https访问有什么不同 将http访问更改为https访问 当您在浏览网页时,遇到“您的连接不是私密连接”的提示,这通常表示浏览器认为您的连接不够安全。这是因为浏览器无法信任网站使用的SSL证书,或者网站没有…