Python 清理嵌套的re.sub语句

Python 清理嵌套的re.sub语句,python,regex,database,Python,Regex,Database,有人能帮我清理一下python中的这个嵌套正则表达式(re.sub)吗?我知道一定有更好的办法,但我不知道怎么做 re.sub('.*Chairman.*','Executive Director',re.sub('.*Managing Director.*','Executive Director',row['capacity'])) 我有一列字符串(行['capacity']),作为集合的一部分从数据库中提取,我希望遍历它,将包含“主席”或“常务董事”的任何行在写入集合时替换为“执行董事”

有人能帮我清理一下python中的这个嵌套正则表达式(re.sub)吗?我知道一定有更好的办法,但我不知道怎么做

re.sub('.*Chairman.*','Executive Director',re.sub('.*Managing Director.*','Executive Director',row['capacity']))
我有一列字符串(行['capacity']),作为集合的一部分从数据库中提取,我希望遍历它,将包含“主席”或“常务董事”的任何行在写入集合时替换为“执行董事”

以下是完整的代码行:

wrhkset = set (( row['organization'], row['lastname'], row['givenname'], re.sub('.*Chairman.*','Executive Director',re.sub('.*Managing Director.*','Executive Director',row['capacity'])) ) for row in wrhk)
注意:“wrhk”是列表的元组。如果需要的话,我可以包含更多的代码,但我真的只是希望有一种更精简的方法来处理嵌套的
re.sub
语句


提前谢谢

您可以使用
|
将两个正则表达式与“or”连接起来:


基于@ubuntu的响应,我使用了OR运算符&re.compile:

patterns = re.compile('(.*Chairman.*)|(.*Managing Director.*)|(.*Chief Executive.*)|(.*CEO.*)')
然后:

这样,我就可以不断添加模式,而不会把我的设置行变成一团乱麻


谢谢

-1正则表达式最好表示为
*(主席|常务董事|另一个|头衔|等)。*
这样尾随的
*
只执行一次。您需要
常务董事
;在re.VERBOSE模式下,“模式中的空格被忽略,除非在字符类中或前面有未加转义的反斜杠”-1您只需要
*
:'。*(董事长|常务董事|首席执行官|首席执行官)。”
patterns = re.compile('(.*Chairman.*)|(.*Managing Director.*)|(.*Chief Executive.*)|(.*CEO.*)')
wrhkset = set (( row['organization'], row['lastname'], row['givenname'], patterns.sub('Executive Director',row['capacity']) ) for row in wrhk)