我正在编写一个屏幕刮板应用程序,监控一个纯文本的聊天窗口。文本添加在窗口底部。
应用程序截取聊天窗口的屏幕截图。如果自上次截图(新截图)以来发生了变化!=旧屏幕截图),保存屏幕截图。
x时间之后,所有图像都合并到一个图像中,其中最旧的图像位于顶部。这个大图像被发送到ocr服务器,并返回一个文本字符串。
问题:如何整理多余的文本?
例子:
聊天窗口高5行,最初为空。
解决方案必须在初始聊天窗口为空且不为空的情况下工作。
每个屏幕快照可以添加多行。同一行可以出现多次,但不能连续出现两次,因此仅进行重复数据消除是不够的(因此使用sorted(set(text.split('\n')))
并不足够)
算法输入:
1个Lorem ipsum dolor sit amet,
1个Lorem ipsum dolor sit amet,
2个连续的告别精英
1个Lorem ipsum dolor sit amet,
2个连续的告别精英
3莫里斯·波特蒂托·埃尼姆·塞德·廷奇杜姆。
1个Lorem ipsum dolor sit amet,
2个连续的告别精英
3莫里斯·波特蒂托·埃尼姆·塞德·廷奇杜姆。
4.莫比元素测定仪,不在场证明。
1个Lorem ipsum dolor sit amet,
2个连续的告别精英
3莫里斯·波特蒂托·埃尼姆·塞德·廷奇杜姆。
4.莫比元素测定仪,不在场证明。
5三分之五。
2个连续的告别精英
3莫里斯·波特蒂托·埃尼姆·塞德·廷奇杜姆。
4.莫比元素测定仪,不在场证明。
5三分之五。
6多内克ac Tincindunt urna。
3莫里斯·波特蒂托·埃尼姆·塞德·廷奇杜姆。
4.莫比元素测定仪,不在场证明。
5三分之五。
6多内克ac Tincindunt urna。
7前庭前蛋白,非左庭前庭前庭前庭前庭前庭前庭前庭前庭前庭前庭前庭前庭前庭前庭前庭前庭前庭前庭前庭前庭前庭前庭前庭前庭前庭前庭前庭前庭前庭前庭前庭前庭前庭前
4.莫比元素测定仪,不在场证明。
5三分之五。
6多内克ac Tincindunt urna。
7前庭前蛋白,非左庭前庭前庭前庭前庭前庭前庭前庭前庭前庭前庭前庭前庭前庭前庭前庭前庭前庭前庭前庭前庭前庭前庭前庭前庭前庭前庭前庭前庭前庭前庭前庭前庭前庭前
8奎斯·菲尼布斯·利奥·洛伦塞德·拉克。
5三分之五。
6多内克AC Tincindunt Urna。
7前庭前蛋白,非左庭前庭前庭前庭前庭前庭前庭前庭前庭前庭前庭前庭前庭前庭前庭前庭前庭前庭前庭前庭前庭前庭前庭前庭前庭前庭前庭前庭前庭前庭前庭前庭前庭前庭前
8奎斯·菲尼布斯·利奥·洛伦塞德·拉克。
1个Lorem ipsum dolor sit amet,
预期结果:
1个Lorem ipsum dolor sit amet,
2个连续的告别精英
3莫里斯·波特蒂托·埃尼姆·塞德·廷奇杜姆。
4.莫比元素测定仪,不在场证明。
5三分之五。
6多内克ac Tincindunt urna。
7前庭前蛋白,非左庭前庭前庭前庭前庭前庭前庭前庭前庭前庭前庭前庭前庭前庭前庭前庭前庭前庭前庭前庭前庭前庭前庭前庭前庭前庭前庭前庭前庭前庭前庭前庭前庭前庭前
8奎斯·菲尼布斯·利奥·洛伦塞德·拉克。
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 - Python |从屏幕抓取应用程序中整理出多余的文本,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52118889/