目录
- 需求分析
- 实现逻辑
- 代码设计
- 效果演示
需求分析
据说朋友的领导以前是政府单位工作的,对文档格式要求严格,要求英文与中文之间不能有空格。朋友之前是直接复制漏洞简介的,现在看来,CNNVD的漏洞简介得删删改改才能用啊,真是无语。
实现逻辑
我最初的设想是实现:
- 删除中英文之间所有多余的空白字符(不包括回车换行)
- 段落之间的回车换行一律设置为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()
效果演示
- 原始的漏洞描述如下:
Red Hat device-mapper-multipath是美国红帽(Red Hat)公司的一个设备映射器多路径。允许您将服务器节点和存储阵列之间的多个 I/O 路径配置到单个设备中。
Red Hat device-mapper-multipath 存在安全漏洞,该漏洞源于 multipathd 在 /dev/shm 中以 root 身份运行不安全。
- 为了展现脚本的功能,我这里手动打乱一下漏洞描述
Red Hat device-mappe
r-multipath是美国红帽(Red Hat)公司的一个
设备映射器多路径。允许您将服务器节点和存储阵列之间的多个 I/O 路径配置到单个
设备 中。
Red Hat device-mapper-mult
ipath 存在安全漏洞,该漏洞源 于 multipathd 在 /dev/shm 中以 root 身份运行不安全。
- 使用脚本后的效果如下
4. 核验效果
通过标记文本中的所有空白字符发现,脚本处理结果符合需求。