首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >python如何在多次运行中替换关键字?

python如何在多次运行中替换关键字?
EN

Stack Overflow用户
提问于 2022-08-03 09:31:13
回答 1查看 414关注 0票数 4

我有两个PPTs (File1.pptx和File2.pptx),其中我有以下2行

代码语言:javascript
复制
XX NOV 2021, Time: xx:xx – xx:xx hrs (90mins)
FY21/22 / FY22/23

我想替换如下所示

( a) NOV 2021NOV 2022

( b) FY21/22 / FY22/23FY21/22 or FY22/23

但问题是,我的替代品在File1.pptx中工作,但在File2.pptx中不起作用。

当我打印运行文本时,我能够看到它们在两张幻灯片中的表示方式不同。

代码语言:javascript
复制
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,并将其替换为所需的关键字?

有什么帮助吗?

更新-基于匹配的不正确替换

更换前

更换后

我的替换关键字可以在下面找到

代码语言:javascript
复制
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'}
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73219378

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档