我正在编写一个屏幕抓取器应用程序,用于监视纯文本聊天窗口。文本将添加到窗口底部。
该应用程序截取聊天窗口的屏幕截图。如果自上次屏幕截图 (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