windows python遍历ppt每个p:cNvPr (DocumentFormat.OpenXml.Presentation.NonVisualDrawingProperties) 的name , 并按_分割。如果name的第二个_后面的值以BD开头,则保留此元素. 否则删除该元素。如果页没有保留的则删除整页.
3条回答 默认 最新
檀越@新空间 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后缀,如果实际情况不同,请相应调整检查条件。解决 无用评论 打赏 举报 编辑记录