Python | 从屏幕抓取器应用程序中整理冗余文本



我正在编写一个屏幕抓取器应用程序,用于监视纯文本聊天窗口。文本将添加到窗口底部。

该应用程序截取聊天窗口的屏幕截图。如果自上次屏幕截图 (new_screenshot != old_screenshot( 以来发生了更改,则会保存屏幕截图。

X 时间后,所有图像将合并为一个图像,其中最旧的图像位于顶部。此大图像将发送到服务器进行 OCR,并返回文本字符串。

问题:如何整理冗余文本?

例:

  • 聊天窗口高 5 行,最初为空。
  • 解决方案必须适用于空且不为空的初始聊天窗口。
  • 每个屏幕截图可以添加多行。同一行可以多次出现,但绝不能连续出现两次,因此仅删除重复数据是不够的(因此使用sorted(set(text.split('n')))是不够的(

算法输入:

1 Lorem ipsum dolor sit amet, 1 Lorem ipsum dolor sit amet, 2 consectetur adipiscing elit1 Lorem ipsum dolor sit amet,


2 consectetur adipiscing elit

3 Mauris porttitor enim sed tincidunt interdum.
1 Lorem ipsum dolor sit amet,2
consectetur adipiscing elit
3 Mauris porttitor enim sed tincidunt interdum.
4 Morbi elementum erat nec nulla auctor, eget porta odio aliquet.
1 Lorem ipsum dolor sit amet,2
consectetur adipiscing elit
3 Mauris porttitor enim sed tincidunt interdum.
4 Morbi elementum erat nec nulla auctor, eget porta odio aliquet.
5 Nam aliquet velit vel elementum tristique.
2 consectetur adipiscing elit
3 Mauris porttitor enim sed tincidunt interdum.
4 Morbi elementum erat nec nulla auctor, eget porta odio aliquet.
5 Nam aliquet velit vel elementum tristique.
6 Donec ac tincidunt urna.
3 Mauris porttitor enim sed tincidunt interdum.
4 Morbi elementum erat nec nulla auctor, eget porta odio aliquet.
5 Nam aliquet velit vel elementum tristique.
6 Donec ac tincidunt urna.
7 Proin pretium, metus non porttitor lobortis, tortor sem rhoncus urna
4 Morbi elementum erat nec nulla auctor, eget porta odio aliquet.
5 Nam aliquet velit vel elementum tristique.
6 Donec ac tincidunt urna.
7 Proin pretium, metus non porttitor lobortis, tortor sem rhoncus urna
8 quis finibus leo lorem sed lacus.
5 Nam aliquet velit vel elementum tristique.
6 Donec ac tincidunt urna.
7 Proin pretium, metus non porttitor lobortis, tortor sem rhoncus urna
8 quis finibus leo lorem sed lacus.
1 Lorem ipsum dolor sit amet,

预期成果:

1 Lorem ipsum dolor sit amet,
2 consectetur adipiscing elit
3 Mauris porttitor enim sed tincidunt interdum.
4 Morbi elementum erat nec nulla auctor, eget porta odio aliquet.
5 Nam aliquet velit vel elementum tristique.
6 Donec ac tincidunt urna.
7 Proin pretium, metus non porttitor lobortis, tortor sem rhoncus urna
8 quis finibus leo lorem sed lacus.
1 Lorem ipsum dolor sit amet,

这是我理解您想要的代码(添加新行,但保留 5 行的历史记录以避免重复(:

history = 5
lastSeen = dict()
result = [] 
for idx, line in enumerate(text.split('n')):
if line not in lastSeen:
result.append(line)
else:
if lastSeen[line] + history < idx:
result.append(line)
lastSeen[line] = idx

最新更新