我有两个PPTs (File1.pptx和File2.pptx),其中我有以下2行
XX NOV 2021, Time: xx:xx – xx:xx hrs (90mins)
FY21/22 / FY22/23我想替换如下所示
( a) NOV 2021为NOV 2022。
( b) FY21/22 / FY22/23为FY21/22 or FY22/23。
但问题是,我的替代品在File1.pptx中工作,但在File2.pptx中不起作用。
当我打印运行文本时,我能够看到它们在两张幻灯片中的表示方式不同。
def replace_text(replacements:dict,shapes:list):
for shape in shapes:
for match, replacement in replacements.items():
if shape.has_text_frame:
if (shape.text.find(match)) != -1:
text_frame = shape.text_frame
for paragraph in text_frame.paragraphs:
for run in paragraph.runs:
cur_text = run.text
print(cur_text)
print("---")
new_text = cur_text.replace(str(match), str(replacement))
run.text = new_text在File1.pptx中,cur_text如下所示(对于第一个关键字)。因此,我的替换工作(因为它包含我正在寻找的关键字)

但是在File2.pptx中,cur_text如下所示(对于第一个关键字)。所以,替换不起作用(因为cur_text与我的搜索词不匹配)

同样的问题也发生在第二个关键字,也就是FY21/22 / FY22/23。
问题是拆分关键字可能在当前运行的前一次或下一次运行中(没有模式)。因此,我们应该能够将搜索项与以前的运行项(以及当前的术语)进行比较。然后可以找到一个匹配项(如2021年11月)并进行替换。
这个问题只发生在10%的搜索词中(而不是我所有的搜索词),但是要忍受这个问题是很可怕的,因为如果%增加,我们可能需要做大量的手工工作。我们如何避免这种情况并正确地编写代码?
我们如何获得/提取/查找/识别我们在多个运行中寻找的单词(当它们确实存在的时候),比如CTRL+F,并将其替换为所需的关键字?
有什么帮助吗?
更新-基于匹配的不正确替换
更换前

更换后

我的替换关键字可以在下面找到
replacements = { 'How are you?': "I'm fine!",
'FY21/22':'FY22/23',
'FY_2021':'FY21/22',
'FY20/21':'FY21/22',
'GB2021':'GB2022',
'GB2020':'GB2022',
'SEP-2022':'SEP-2023',
'SEP-2021':'SEP-2022',
'OCT-2021':'OCT-2022',
'OCT-2020':'OCT-2021',
'OCT 2021':'OCT 2022',
'NOV 2021':'NOV 2022',
'FY2122':'FY22/23',
'FY2021':'FY21/22',
'FY1920':'FY20/21',
'FY_2122':'FY22/23',
'FY21/22 / FY22/23':'FY21/22 or FY22/23',
'F21Y22':'FY22/23',
'your FY20 POS FCST':'your FY22/23 POS FCST',
'your FY21/22 POS FCST':'your FY22/23 POS FCST',
'Q2/FY22/23':'Q2-FY22/23',
'JAN-22':'JAN-23',
'solution for FY21/22':'solution for FY22/23',
'achievement in FY20/21':'achievement in FY21/22',
'FY19/20':'FY20/21'}https://stackoverflow.com/questions/73219378
复制相似问题