目录

  • 需求分析
  • 实现逻辑
  • 代码设计
  • 效果演示


需求分析

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

python中表示英文字母的 python中英文字符_代码设计

实现逻辑

我最初的设想是实现:

  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. 使用脚本后的效果如下

python中表示英文字母的 python中英文字符_代码设计_02


4. 核验效果

通过标记文本中的所有空白字符发现,脚本处理结果符合需求。

python中表示英文字母的 python中英文字符_Red_03