gpt4 book ai didi

python-pptx - 使用已知幻灯片索引和 shape_id 替换图表中的数据

转载 作者:行者123 更新时间:2023-12-04 15:39:17 24 4
gpt4 key购买 nike

我想更新条形图中的数据,但在访问包含图表的对象的步骤中出现错误。这是给我 shape_id 的代码:

shp=prs.slides[0].shapes
for shape in shp:
print(
"id: %s, type: %s, name: %s"
% (shape.shape_id, shape.shape_type, shape.name)
)

# => **Output:** id: 7, type: CHART (3), name: Chart 6

但是,当我尝试使用 shape_id 定义图表对象时,出现以下错误:图表 = prs.slides[0].shapes[7].图表

错误:

raise IndexError("shape index out of range")
IndexError: shape index out of range

我也试过这段代码:chart = shp._spTree.shape_id[7].chart

错误:

TypeError: 'int' object is not subscriptable

最佳答案

问题是您正在使用 shape-id 作为形状序列的 index。 shape-id 与该形状在形状“列表”中的位置不对应。

要通过 ID(或名称)查找形状,您需要这样的代码:

def find_shape_by_id(shapes, shape_id):
"""Return shape by shape_id."""
for shape in shapes:
if shape.shape_id == shape_id:
return shape
return None

或者如果你做了很多,你可以使用 dict 来完成这项工作:

shapes_by_id = dict((s.shape_id, s) for s in shapes)

然后它会为您提供所有方便的 dict 方法,例如:

>>> 7 in shapes_by_id
True
>>> shapes_by_id[7]
<pptx.shapes.Shape object at 0x...>

关于python-pptx - 使用已知幻灯片索引和 shape_id 替换图表中的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58532537/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com