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



我是一名视频编辑,试图将人才脚本的word文档自动转换为STR文件中的字幕,以加快这一过程。由于每个视频的结构都是相同的,所以这个想法效果很好。在脚本中,我试图通过使用.replacement((函数从用Python创建的STR文件和Python docx库中删除一些编辑指示,但这似乎不起作用。这些都以"(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.replacement((不会对原始字符串进行变异,而是返回变异后的字符串。你应该重新分配给你的变量:

#...
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()函数返回一个新字符串。

但是添加到您的代码中。

您不需要所有这些条件,如果str.replace()没有找到您要查找的子字符串,它将返回相同的字符串。

示例:

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)

打印:"空字符串">

还有:

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

最新更新