【发布时间】:2023-03-24 10:50:02
【问题描述】:
对 XML 和 python-pptx 模块非常陌生,我想删除每个页面上存在的单个超链接
到目前为止,我自己的尝试是检索我的文件,更改为zip 格式并将它们解压缩到单独的文件夹中
然后我找到以下属性<a:hlinkClick r:id="RelId4">
并删除它,同时删除与此幻灯片对应的 xml.rels 文件中的 Relationshipattribute。
然后我重新压缩并将扩展名更改为 pptx,这会加载罚款。然后我尝试在 Python 中复制它,这样我就可以创建一个持续的自动化。
我的尝试:
from pathlib import Path
import zipfile as zf
from pptx import Presentation
import re
import xml.etree.ElementTree as ET
path = 'mypath'
ppts = [files for files in Path(path).glob('*.pptx')]
for file in ppts:
file.rename(file.with_suffix('.zip'))
zip_files = ppts = [files for files in Path(path).glob('*.zip')]
for zips in zip_files:
with zf.ZipFile(zips,'r') as zip_ref:
zip_ref.extractall(Path(path).joinpath('zipFiles',zips.stem))
然后我做一些进一步的过滤,最终得到来自 rels 文件夹和 ppt/slide 文件夹的我的 xml。
我在这里卡住了我可以使用ElementTree 模块读取我的xml,但我找不到要删除的相关标签?
for file in normal_xmls:
tree = (ET.parse(file).getroot())
y = tree.findall('a')
print(y)
这不会产生任何结果,我尝试使用 python-pptx 模块,但 .Action.Hyperlink 似乎不是一个完整的功能,除非我误解了 API。
【问题讨论】:
-
这真的是两个问题@datanovice。 SO 确实是为单问题/单答案格式设置的,这使得人们更有可能在搜索中找到他们正在寻找的内容。如果你把它分成两个单独的问题,我会看看它们。
-
@scanny 刚要去健身房,但我回来后会尽快编辑,谢谢,如果这很酷,我会提到你
-
@scanny 编辑成一个问题,如果您需要查看 pptx 的 XML,请告诉我。
-
请描述多张幻灯片上的超链接。它是超链接形状还是在文本中?你能认出它所在的形状吗?
-
@scanny 如果图像在形状下,那么是的,它在形状内。 pptx 中没有任何文字,所以只能是一个形状。
标签: python powerpoint python-pptx