我正在编写一个屏幕抓取应用程序来监控纯文本聊天窗口。文本被添加到窗口的底部。
应用程序截取聊天窗口的屏幕截图。如果自上次截屏以来发生了更改 (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 conectetur adipiscing elit
1 Lorem ipsum dolor sit amet,
2 conectetur adipiscing elit
3 Mauris porttitor enim sed tincidunt interdum.
1 Lorem ipsum dolor sit amet,
2 conectetur 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 conectetur 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 conectetur 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 conectetur 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
关于 python |从屏幕抓取应用程序中整理出冗余文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52118889/