Python 替换文件中的字符串

Python 替换文件中的字符串,python,python-2.7,python-3.x,Python,Python 2.7,Python 3.x,我有一个表达式列表,我想替换文件中的每个表达式 我试过这个密码 for a in ex: if a in file.split(): file = file.replace(a, '[' + ' ' + a + ' ' +']') print file 我的代码还替换了括号中另一个表达式的一部分表达式。所以我只想替换那些不属于括号中另一个表达式的表达式。 如何获得所需的结果?您可以通过re模块实现这一点。在这里,模式的顺序非常重要。由于“人权组织”位于“人权组织”之前,因此

我有一个表达式列表,我想替换文件中的每个表达式

我试过这个密码

for a in ex:
   if a in file.split():
       file = file.replace(a, '[' + ' ' + a + ' ' +']')
print file
我的代码还替换了括号中另一个表达式的一部分表达式。所以我只想替换那些不属于括号中另一个表达式的表达式。
如何获得所需的结果?

您可以通过re模块实现这一点。在这里,模式的顺序非常重要。由于
“人权组织”
位于
“人权组织”
之前,因此正则表达式引擎将首先尝试查找
人权组织。如果找到匹配项,它将用
[
+match+
]
替换匹配项。然后转到下一个模式,即
人权
,无论前一个模式是否找到匹配项。现在,此
人权
模式将匹配
人权
字符串中不存在的所有
人权
字符串。因为默认情况下正则表达式不会进行重叠匹配。如果希望正则表达式模式进行重叠匹配,则需要将该模式放在lookarounds中,并且该模式必须由
()
(即捕获组)包围

>>> ex = ['liberty of freedom', 'liberty', 'organizations of human rights', 'human rights']
>>> file = " The american people enjoys a liberty of freedom and there are many international organizations of human rights."
>>> reg = '|'.join(ex)
>>> import re
>>> re.sub('('+reg+')', r'[\1]', file)
' The american people enjoys a [liberty of freedom] and there are many international [organizations of human rights].'