我有一个需要规范化的标题列表。例如,如果标题包含“CTO”,则需要将其更改为“首席技术官”。但是,如果“CTO”的左边或右边没有直接的字母,我只想替换“CTO”。例如,“Director”包含“cto”。我显然不想让这个被取代。但是,我确实希望在标题为“创始人/首席技术官”或“首席技术官/创始人”的情况下将其替换
有没有办法用正则表达式检查字母是否在“CXO”之前?或者,完成这项任务的最佳方式是什么
编辑: 我的代码如下
test = 'Co-Founder/CTO'
test = re.sub("[^a-zA-Z0-9]CTO", 'Chief Technology Officer', test)
结果是“联合创始人首席技术官”。由于某种原因,“/”会被替换。然而,如果test='CTO/联合创始人',则不会发生这种情况
您需要的是一个正则表达式,它在一个点之前排除一系列内容:
但实际上,您还需要检查CTO何时出现在行的开头:
要使用
re.sub
中的第一个表达式,可以添加分组运算符(()
),然后在替换中使用它来提取匹配字符(例如空格或/):将导致
回答:
"(?<=[^a-zA-Z0-9])CTO|^CTO"
Lookbehinds是完美的选择
但不幸的是,这不适用于行的开头(因为python实现需要固定长度)
您必须通过
|
明确检查这一点:相关问题 更多 >
编程相关推荐