Python| 从screen scraper应用程序中整理冗余文本

2024-09-28 01:26:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在编写一个scraper应用程序来监视一个纯文本的聊天窗口。文本添加在窗口底部

应用程序截取聊天窗口的屏幕截图。如果自上次屏幕截图(新屏幕截图!=旧截图),截图保存

在X时间之后,所有图像合并到一个图像中,最老的图像位于顶部。这个大图像被发送到服务器进行OCR,并返回一个文本字符串

问题:如何整理多余的文本

示例:

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

算法输入:

1 Lorem ipsum悲哀坐在amet,
1 Lorem ipsum悲哀坐在amet,
2个连续进阶精英
1 Lorem ipsum悲哀坐在amet,
2个连续进阶精英
3毛里斯·波特蒂托·埃尼姆·塞德·廷西德蒙特·因特杜姆。
1 Lorem ipsum悲哀坐在amet,
2个连续进阶精英
3毛里斯·波特蒂托·埃尼姆·塞德·廷西德蒙特·因特杜姆。
4 Morbi elementum erat nec nulla auctor,eget porta odio aliquet.
1 Lorem ipsum悲哀坐在amet,
2个连续进阶精英
3毛里斯·波特蒂托·埃尼姆·塞德·廷西德蒙特·因特杜姆。
4 Morbi elementum erat nec nulla auctor,eget porta odio aliquet.
5 Nam aliquet velit vel elementum tristique.
2个连续进阶精英
3毛里斯·波特蒂托·埃宁·塞德·廷西德蒙特·因特杜姆
4 Morbi elementum erat nec nulla auctor,eget porta odio aliquet酒店
5 Nam aliquet velit vel elementum tristique村
6顿涅克·亚克·廷奇杜特·乌尔纳(Donec ac tincidunt urna)
3毛里斯·波特蒂托·埃尼姆·塞德·廷西德蒙特·因特杜姆。
4 Morbi elementum erat nec nulla auctor,eget porta odio aliquet.
5 Nam aliquet velit vel elementum tristique.
6.不可更改。
前牙、后牙、后牙、后牙、后牙、后牙、后牙、后牙、后牙、后牙、后牙、后牙、后牙、后牙、后牙、后牙、后牙、后牙、后牙、后牙、后牙、后牙、后牙、后牙、后牙、后牙、后牙 4 Morbi elementum erat nec nulla auctor,eget porta odio aliquet.
5 Nam aliquet velit vel elementum tristique.
6.不可更改。
前牙、后牙、后牙、后牙、后牙、后牙、后牙、后牙、后牙、后牙、后牙、后牙、后牙、后牙、后牙、后牙、后牙、后牙、后牙、后牙、后牙、后牙、后牙、后牙、后牙、后牙、后牙 8个利奥·洛雷姆·塞德·拉库斯完成任务。
5 Nam aliquet velit vel elementum tristique.
6.不可更改。
前牙、后牙、后牙、后牙、后牙、后牙、后牙、后牙、后牙、后牙、后牙、后牙、后牙、后牙、后牙、后牙、后牙、后牙、后牙、后牙、后牙、后牙、后牙、后牙、后牙、后牙、后牙 8个利奥·洛雷姆·塞德·拉库斯完成任务。
1 Lorem ipsum悲哀坐在amet,

预期结果:

1 Lorem ipsum悲哀坐在amet,
2个连续进阶精英
3毛里斯·波特蒂托·埃宁·塞德·廷西德蒙特·因特杜姆
4 Morbi elementum erat nec nulla auctor,eget porta odio aliquet酒店
5 Nam aliquet velit vel elementum tristique村
6顿涅克·亚克·廷奇杜特·乌尔纳(Donec ac tincidunt urna)
前牙、后牙、后牙、后牙、后牙、后牙、后牙、后牙、后牙、后牙、后牙、后牙、后牙、后牙、后牙、后牙、后牙、后牙、后牙、后牙、后牙、后牙、后牙、后牙、后牙、后牙、后牙 利奥·洛雷姆·塞德·拉库斯8号
1 Lorem ipsum悲哀坐在amet,


Tags: necipsum精英loremametmorbiodioeget
1条回答
网友
1楼 · 发布于 2024-09-28 01:26:23

以下是我理解的您想要的代码(添加新的行,但保留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

相关问题 更多 >

    热门问题