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

文章目录

  • [Part.I Introduction](#Part.I Introduction)
  • [Part.II 使用方法](#Part.II 使用方法)
    • [Chap.I 直接处理字符串](#Chap.I 直接处理字符串)
    • [Chap.II 处理文件](#Chap.II 处理文件)
  • [Part.III Source Code](#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 pangu

def add_space_between_content(original_text):
    processed_text = pangu.spacing(original_text)
    pattern = r'([a-zA-Z]+)(\d+)'   # Letters before numbers
    def 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 letter
    processed_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.要求:

(1)100个音节中,70%选自《普通话水平测试用普通话词语表》"表一",30%选自"表二"。

(2)100个音节中,每个声母出现次数一般不少于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. 要求:
(1)100 个音节中,70% 选自《普通话水平测试用普通话词语表》"表一",30% 选自 "表二"。
(2)100 个音节中,每个声母出现次数一般不少于 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 pangu

def add_space_between_content(original_text):
    processed_text = pangu.spacing(original_text)
    pattern = r'([a-zA-Z]+)(\d+)'   # Letters before numbers
    def 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 letter
    processed_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

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()

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

相关推荐
Y幽谷客1 小时前
Python加载本地大模型(Qwen3.5 8B)
python·大模型
伞伞悦读1 小时前
【第36期】Python 目录与路径详解:pathlib、文件遍历、创建、复制、移动和删除风险
开发语言·python
线上放牧人2 小时前
Windows删除图标缓存
windows·python·pyqt
qq_5470261792 小时前
Python 变量和简单数据类型
python
智搜广告3 小时前
智搜广告:科技行业AI回答优化公司如何破局
大数据·python·elasticsearch·geo
IpdataCloud4 小时前
AI智能体调用工具怎么核验来源IP?归属地、网络类型与代理风险识别(含Python代码)
数据库·python·tcp/ip
2601_966949654 小时前
只拿到股票代码还不够:量化程序到底还需要哪些标的信息?——从数据建模开始理解股票元数据
开发语言·python·数据分析·pandas·量化交易·股票数据·quantdash
蒸鱼Yuzheng4 小时前
Python 游戏测试开发怎么准备:日志解析、接口校验、并发与可维护性
自动化测试·python·测试开发·面试题·游戏测试
Ivanqhz5 小时前
BM1688 双核架构
python·深度学习·神经网络·cnn·mlir
Java后端的Ai之路5 小时前
Python进阶探索17 - Python中的深拷贝与浅拷贝
人工智能·python·ai·浅拷贝·深拷贝