Python pptx - 根据条件停止阅读幻灯片

Python pptx - stop reading slide based on conditions

我希望阅读一堆具有相同功能的幻灯片的内容。我需要的信息在前 2 张幻灯片或前 3 张幻灯片上。但我不知道哪些有 2 个有用的幻灯片,哪些有 3 个,对我的情况来说什么是好的停止条件?

我想利用紧随其后的页面的某些功能来跳出循环,但我不知道 pptx 是如何读取文件的 -- 它会先读取文本框吗?它会先读表吗?对于表格等,它是否从上到下从左到右阅读?

有什么想法或建议吗?

一张幻灯片包含 形状,其中某些类型可以包含文本。幻灯片上的形状在 slide.shapes 中并以 z 顺序 出现,这意味着最底部的形状首先出现,随后的每个形状都“叠加在该形状的顶部” .如果形状不重叠,那可能没什么大不了的,但是当重叠时,下面的部分或全部形状可能会被上面的形状遮挡。

您可以使用 shape.has_text_frame 属性.

区分可以包含文本的形状和不能包含文本的形状

我会说从形状中读取您的内容,并在您获得所有内容后停止,例如:

for shape_idx, shape in enumerate(slide.shapes):
    if not shape.has_text_frame:
        continue
    # --- ... inspect shape content ... ---
    if all_content_is_collected() or shape_idx > 1:
        break

您必须确定是否收集了您所关注的所有内容(通过实施 all_content_is_collected())。循环将在处理完 slide.shapes[2] 后中断,这是第三张幻灯片。