windows python遍历ppt每个p:cNvPr (DocumentFormat.OpenXml.Presentation.NonVisualDrawingProperties) 的name , 并按_分割。如果name的第二个_后面的值以BD开头,则保留此元素. 否则删除该元素。如果页没有保留的则删除整页.
3条回答 默认 最新
- Kwan的解忧杂货铺@新空间代码工作室 2024-06-01 13:44关注
下午好🌅🌅🌅
本答案参考ChatGPT-3.5要在Python中操作PowerPoint(PPTX)文件,你需要使用
python-pptx
库。首先确保你已经安装了这个库,如果没有,可以通过pip安装:pip install python-pptx
然后,你可以按照以下步骤编写代码来遍历PPTX中的每一页,并根据条件删除或保留元素:
- 导入所需的模块:
from pptx import Presentation from pptx.util import Inches from pptx.dml.color import RGBColor
- 读取PPTX文件:
# 指定你的PPTX文件路径 presentation_path = "path_to_your_pptx_file.pptx" pres = Presentation(presentation_path)
- 遍历每一页并处理
p:cNvPr
元素:
for slide in pres.slides: for shape in slide.shapes: # 获取非视觉属性对象 non_visual_props = shape.non_visual_properties # 检查`p:nvPr`标签是否存在,因为`cNvPr`是其子元素 if non_visual_props.has_nv_pr: nv_pr = non_visual_props.nv_pr # 获取`p:nvPr`的文本内容 name_text = nv_pr.text.strip() # 使用split方法按_分割,并检查第二个_后面的值 parts = name_text.split("_") if len(parts) > 1 and parts[1].startswith("BD"): # 如果符合条件,保留元素 pass else: # 删除元素 shape.element.clear()
- 删除整个页面,如果页面上没有保留的元素:
# 判断页面是否有保留的元素 if not any(shape.element for shape in slide.shapes): # 删除整页 pres.slides.remove(slide)
- 保存更改后的PPTX文件:
# 保存处理后的PPTX文件 new_pptx_path = "new_presentation.pptx" pres.save(new_pptx_path)
请注意,这个代码会直接修改原始PPTX文件,如果你不想覆盖原始文件,可以先备份。此外,这个示例假设
p:nvPr
的文本格式是name_前缀_BD后缀
,如果实际情况不同,请相应调整检查条件。解决 无用评论 打赏 举报 编辑记录
悬赏问题
- ¥30 STM32 INMP441无法读取数据
- ¥100 求汇川机器人IRCB300控制器和示教器同版本升级固件文件升级包
- ¥15 用visualstudio2022创建vue项目后无法启动
- ¥15 x趋于0时tanx-sinx极限可以拆开算吗
- ¥500 把面具戴到人脸上,请大家贡献智慧
- ¥15 任意一个散点图自己下载其js脚本文件并做成独立的案例页面,不要作在线的,要离线状态。
- ¥15 各位 帮我看看如何写代码,打出来的图形要和如下图呈现的一样,急
- ¥30 c#打开word开启修订并实时显示批注
- ¥15 如何解决ldsc的这条报错/index error
- ¥15 VS2022+WDK驱动开发环境