在处理文本的过程中,比如下载的网文,经常会出现有意或无意的重复句子、段落甚至篇章。今天就以一个网络小说为例,实现网络小说错误重复文本的校对、标记和删除。

下载到《国民法医》的txt文件,目测章节、标题和内容还都正常。

image-20231217082511845

image-20231217082555492

很多人直接阅读TxT排版小说,对其毅力表示由衷钦佩。Ai-China是将其Ctrl+A Ctrl+C Ctrl+VWord中,Ctrl+H,使用通配符,查找===([一-﨩]*?)===,替换为===\1===,且在替换框中(如下图所示)选择格式-> 样式–>标题2,先做好章节标题排版。

image-20231217083711140

接下来去除文本中多余空格。

观察文本,一般在是段首或段末存在多余空格,复制一下空格,还是查找替换。查找中填写刚才复制的空格,替换为空。全部替换。

然后做中文文本的首行缩进。

查找内容中,选择格式–>字体,选择五号 (即用与刚刚处理好的标题字号相区别的正文文本字号,选择正文文本)

image-20231217084327641

替换为中,选择格式–>段落,再选择缩进–>特殊–>首行,如下设置为2字符4字符(视中文字体或英文字体而定)

image-20231217084858882

点击确定,然后全部替换,完成了首行缩进。

现在的版式已经好了很多,阅读无障碍。

接下来,因为网文内容的不规范,大概率会出现很多缺失和重复内容。我们可以用查重的方式做一个批量对照处理,即用一段脚本找出文本中句段的重复,标记、删除重复,并再找出正确对应内容填充回去。

  1. 将刚才待处理的Word文件保存为input.docx,最好放入一个单独的文件夹。
  2. 将以下代码保存为rm.py,保存到上面同一文件夹。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
from docx import Document
from docx.shared import RGBColor

def process_word_file(input_path, output_path):
# 读取 Word 文件
doc = Document(input_path)

# 存储已经出现的句子
seen_sentences = set()

# 遍历每个段落
for paragraph in doc.paragraphs:
# 以句为单位切分段落
sentences = paragraph.text.split('。?!!……”') # 你可能需要根据实际情况添加更多分隔符

# 处理每个句子
for sentence in sentences:
# 如果句子不在已经出现的句子中,添加到输出中,并将句子加入已见集合
if sentence and sentence not in seen_sentences:
seen_sentences.add(sentence)
else:
# 如果句子已经出现过,加上划删除线
for run in paragraph.runs:
if sentence in run.text:
run.font.strike = True
run.font.color.rgb = RGBColor(255, 0, 0) # 设置高亮颜色

# 保存输出为新的 Word 文件
doc.save(output_path)

# 用法示例
process_word_file('input.docx', 'output.docx')

  1. 进入上述文件夹,在该文件夹内打开cmd(点击地址栏后输入cmd即可)。
  2. 在程序端输入python rm.py执行脚本,大约几秒后即可完成处理,并在同文件夹内生成一个名为output.docx的文件。打开后即可找到标记为红色高亮删除线的重复句段。(需要计算机内已安装python,安装很简单,在此不赘述)
  3. 对照网上其他来源的文本内容,即可查重补漏,生成一篇完整完美的网文小说。