python实现——规范中英文内容

需求分析

据说朋友的领导以前是政府单位工作的,对文档格式要求严格,要求英文与中文之间不能有空格。朋友之前是直接复制漏洞简介的,现在看来,CNNVD的漏洞简介得删删改改才能用啊,真是无语。
在这里插入图片描述

实现逻辑

我最初的设想是实现:

  1. 删除中英文之间所有多余的空白字符(不包括回车换行)
  2. 段落之间的回车换行一律设置为1个回车换行

实现起来发现第2个目标有些困难,因为如果文章是非常散乱的话,我是没办法区分你到底是换行,还是排版错误,因此,最终实现的效果是删除中英文之间所有多余的空白字符(包括回车换行)

代码设计

脚本可以直接运行,无需做任何更改

import re

print('脚本功能:自动规范化空白字符,移除多余的空白字符\n请输入(输入quit结束输入):')

word = []  # 存储用户输入的内容
while True:
    char = input()
    char = char.strip()
    if char == '':
        continue
    if 'quit' in char:
        break
    word.append(char)
text = ''.join(word)

# print(text)
# print('**************************')

reg1 = "([^A-Za-z\s][^\S\r\n]+[A-Za-z]|[A-Za-z][^\S\r\n]+[^A-Za-z\s]|[^A-Za-z\s][^\S\r\n]+[^A-Za-z\s])"

result = re.split(reg1, text)
new_result = []

for i in result:
    i = i.strip()
    if re.search(reg1, i):
        # print('成功(原始):' + i)
        i = i.replace(' ', '')
        new_result.append(i)
        # print('成功(修复):' + i)
    else:
        # print('失败(原始):' + i)
        i = ' '.join(i.split())  # 如果存在两个及以上的空白字符,全部替换为单个空白字符
        new_result.append(i)
        # print('失败(修复):' + i)

# print(''.join(new_result))

# 把多个换行转换为1个换行(由于没有换行了,因此此功能暂时失效)
# print('********************')
b = re.sub('\n+', '\n', ''.join(new_result))
print()
print(b)
print()

效果演示

CNNVD-202210-1705举例:

  1. 原始的漏洞描述如下:
Red Hat device-mapper-multipath是美国红帽(Red Hat)公司的一个设备映射器多路径。允许您将服务器节点和存储阵列之间的多个 I/O 路径配置到单个设备中。

Red Hat device-mapper-multipath 存在安全漏洞,该漏洞源于 multipathd 在 /dev/shm 中以 root 身份运行不安全。
  1. 为了展现脚本的功能,我这里手动打乱一下漏洞描述
Red Hat device-mappe

r-multipath是美国红帽(Red Hat)公司的一个

		设备映射器多路径。允许您将服务器节点和存储阵列之间的多个 I/O 路径配置到单个

设备   中。




Red Hat device-mapper-mult

ipath 存在安全漏洞,该漏洞源   于  multipathd 在 /dev/shm 中以 root 身份运行不安全。
  1. 使用脚本后的效果如下

在这里插入图片描述
4. 核验效果
通过标记文本中的所有空白字符发现,脚本处理结果符合需求。
在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值