有人可以帮我在python中清理这个嵌套的正则表达式(re.sub)吗?我知道必须有更好的方法来做到这一点,但我无法弄清楚如何。
re.sub('.*Chairman.*','Executive Director',re.sub('.*Managing Director.*','Executive Director',row['capacity']))
我有一个字符串列(row ['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
语句。
提前致谢!
答案 0 :(得分:2)
您可以使用|
通过“或”加入两个正则表达式:
re.sub(r'''(?x)
.*(
Chairman | Managing[]Director # or
).*
''','Executive Director', row['capacity'])
答案 1 :(得分:-1)
在@ ubuntu的响应基础上,我使用了OR运算符& re.compile:
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)
通过这种方式,我可以继续添加模式而不会将我的设置线变为难以理解的混乱。
谢谢!