Python .replace() 函数可以替换整个短语吗?

Can the Python .replace() function replace whole phrases?

我是一名视频编辑,试图将人才脚本的 word 文档自动转换为字幕的 STR 文件,以加快流程。由于每个视频的结构都相同,因此这个想法很有效。在脚本中,我试图通过使用 .replace() 函数从使用 Python 和 python-docx 库创建的 STR 文件中删除一些编辑说明,但是这似乎没有用。这些都以“(CUT”开头,以下可能的句子各不相同。程序正确地选择了这些句子出现的位置,但替换函数不会产生任何结果变化。我在这里做错了什么?

for x in range(2,len(doc.paragraphs)):
newPara = doc.paragraphs[x].text

if (newPara.find('(CUT') != -1):
    newPara.replace('(CUT', '')
   
    if (newPara.find('COMPLETE)') != -1):
        newPara.replace(' AWAY COMPLETE)', '')
       
    elif (newPara.find('TITLE)') != -1):
        newPara.replace(' AWAY TO TITLE)', '')

    elif (newPara.find('SIDE)') != -1):
        newPara.replace(' BACK TO SIDE)', '')

str.replace() 不会改变原始字符串 - 它 returns 是变异的字符串。 你应该重新分配给你的变量:

#...
if (newPara.find('(CUT') != -1):
    newPara = newPara.replace('(CUT', '')

    if (newPara.find('COMPLETE)') != -1):
        newPara = newPara.replace(' AWAY COMPLETE)', '')

    elif (newPara.find('TITLE)') != -1):
        newPara = newPara.replace(' AWAY TO TITLE)', '')

    elif (newPara.find('SIDE)') != -1):
        newPara = newPara.replace(' BACK TO SIDE)', '')

正如上面那个人所说,字符串是不可变的,str.replace() 函数 returns 一个新字符串。

但添加到您的代码中。

您不需要所有这些条件,如果 str.replace() 没有找到您正在寻找的子字符串 returns 相同的字符串。

示例:

newPara = '(CUT AWAY COMPLETE) AWAY TO TITLE) BACK TO SIDE)Empty String'

if (newPara.find('(CUT') != -1):
    newPara = newPara.replace('(CUT', '')
    newPara = newPara.replace(' AWAY COMPLETE)', '')
    newPara = newPara.replace(' AWAY TO TITLE)', '')
    newPara = newPara.replace(' BACK TO SIDE)', '')

print(newPara)

打印:'Empty String'

还有:

if (newPara.find('(CUT') != -1):
    for substring in ['(CUT',' AWAY COMPLETE)',' AWAY TO TITLE)', ' BACK TO SIDE)']:
        newPara = newPara.replace(substring, '')