<p>这里有一个使用<code>re.sub</code>的选项:</p>
<pre><code>def type_to_upper(match):
return match.group(1).upper()
text = "Contract Employee"
output = re.sub(r'\b(Contract|Temporary)\b', type_to_upper, text)
</code></pre>
<p><strong>编辑:</strong></p>
<p>这与在pandas中应用的方法相同,也解决了关于要替换的不确定大写或小写单词的最新编辑:</p>
<p>测试数据帧:</p>
<pre><code> TYPE NAME
0 Contract Employee John
1 Full Time Employee Carol
2 Temporary Employee Kyle
3 contract employee John
4 Full Time employee Carol
5 temporary employee Kyle
</code></pre>
<p>解决方案:</p>
<pre><code>def type_to_upper(match):
return '_{}_'.format(match.group(1).upper())
df.TYPE = df.TYPE.str.replace(r'\b([Cc]ontract|[Tt]emporary)\b', type_to_upper)
</code></pre>
<p>结果:</p>
<pre><code>df
TYPE NAME
0 _CONTRACT_ Employee John
1 Full Time Employee Carol
2 _TEMPORARY_ Employee Kyle
3 _CONTRACT_ employee John
4 Full Time employee Carol
5 _TEMPORARY_ employee Kyle
</code></pre>
<p>请注意,这仅用于解决OPs请求中定义的这两种情况。对于完全不区分大小写的情况,它更简单:</p>
<pre><code>df.TYPE = df.TYPE.str.replace(r'\b(contract|temporary)\b', type_to_upper, case=False)
</code></pre>